首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在Rails中下载PDF显示页面,每个显示具有不同的PDF

在Rails中下载PDF显示页面,每个显示具有不同的PDF
EN

Stack Overflow用户
提问于 2018-06-03 22:00:22
回答 1查看 25关注 0票数 1

我试图在我创建的博客上添加一个PDF下载链接,但链接有问题。

我查阅了几篇SO帖子(如thisthis)以获得尽可能多的信息,但由于我正在处理变量(因为我使用的是blogs#show ),他们对我的了解仅限于此。

在我的表单中,我用@blog.link_text表示应该在页面上显示的确切链接文本(例如“为您的笔记下载一个免费的可打印的PDF”)和@blog.link_filename来存储应该下载的PDF的路径。

blogs#show上,我在ERB中有以下链接:

代码语言:javascript
复制
  <h3>
    <%= link_to download_pdf_path(@blog.link_filename), type: "application/pdf" do %>
      <%= @blog.link_text %>
    <% end %>
  </h3>

然后在我的routes.rb中有这个:

代码语言:javascript
复制
  get "download_pdf", to: "blogs#download_pdf"

最后,在我的blogs_controller.rb中有download_pdf方法:

代码语言:javascript
复制
  def download_pdf(filename)
    send_file filename, type: "application/pdf"
  end

我目前的@blog.link_filename值是"app/assets/images/house_tour_notes.pdf",但我已经尝试了各种其他值。我目前在imagespublic中有一份PDF副本。

该链接正确地显示在页面上,但当它被单击时,我会得到:

代码语言:javascript
复制
No route matches [GET] "/download_pdf.%22app%2Fassets%2Fimages%2Fhouse_tour_notes.pdf%22"

任何人都可以帮助解决这个问题吗?我哪里错了?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-03 22:15:01

我认为你可以通过不同的方式很容易地解决这个问题。该链接可以转到博客帖子本身:

代码语言:javascript
复制
<h3>
  <%= link_to download_pdf_path(@blog), type: "application/pdf" do %>
    <%= @blog.link_text %>
  <% end %>
</h3>

更改路由:

代码语言:javascript
复制
get "blogs/:id/download_pdf", controller: 'blogs', action:'download_pdf', as: 'download_pdf'

然后更改控制器:

代码语言:javascript
复制
def download_pdf
  @blog = Blog.find(params[:id])
  send_file Rails.root.join(@blog.filename), type: "application/pdf"
end
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50667190

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档