我试图在我创建的博客上添加一个PDF下载链接,但链接有问题。
我查阅了几篇SO帖子(如this和this)以获得尽可能多的信息,但由于我正在处理变量(因为我使用的是blogs#show
),他们对我的了解仅限于此。
在我的表单中,我用@blog.link_text
表示应该在页面上显示的确切链接文本(例如“为您的笔记下载一个免费的可打印的PDF”)和@blog.link_filename
来存储应该下载的PDF的路径。
在blogs#show
上,我在ERB中有以下链接:
<h3>
<%= link_to download_pdf_path(@blog.link_filename), type: "application/pdf" do %>
<%= @blog.link_text %>
<% end %>
</h3>
然后在我的routes.rb
中有这个:
get "download_pdf", to: "blogs#download_pdf"
最后,在我的blogs_controller.rb
中有download_pdf
方法:
def download_pdf(filename)
send_file filename, type: "application/pdf"
end
我目前的@blog.link_filename
值是"app/assets/images/house_tour_notes.pdf"
,但我已经尝试了各种其他值。我目前在images
和public
中有一份PDF副本。
该链接正确地显示在页面上,但当它被单击时,我会得到:
No route matches [GET] "/download_pdf.%22app%2Fassets%2Fimages%2Fhouse_tour_notes.pdf%22"
任何人都可以帮助解决这个问题吗?我哪里错了?
发布于 2018-06-03 22:15:01
我认为你可以通过不同的方式很容易地解决这个问题。该链接可以转到博客帖子本身:
<h3>
<%= link_to download_pdf_path(@blog), type: "application/pdf" do %>
<%= @blog.link_text %>
<% end %>
</h3>
更改路由:
get "blogs/:id/download_pdf", controller: 'blogs', action:'download_pdf', as: 'download_pdf'
然后更改控制器:
def download_pdf
@blog = Blog.find(params[:id])
send_file Rails.root.join(@blog.filename), type: "application/pdf"
end
https://stackoverflow.com/questions/50667190
复制相似问题