Ruby on rails Rails:发送不导致下载的文件,链接到';显示';而不是控制器方法

Ruby on rails Rails:发送不导致下载的文件,链接到';显示';而不是控制器方法,ruby-on-rails,download,Ruby On Rails,Download,第一次使用rails时,我试图创建一个下载链接,以便从文件系统中获取一些内容 在我看来,我有 <%= link_to 'Show', upload, :method => :download %> 这是必要的,因为我对谁可以查看此pdf有限制,但在此页面上,我链接到 http://localhost:3000/uploads/10 (10是此“上载”的id) 在那一页,我得到了错误 Unknown action No action responded to 10.

第一次使用rails时,我试图创建一个下载链接,以便从文件系统中获取一些内容

在我看来,我有

<%= link_to 'Show', upload, :method => :download %>
这是必要的,因为我对谁可以查看此pdf有限制,但在此页面上,我链接到

http://localhost:3000/uploads/10
(10是此“上载”的id)

在那一页,我得到了错误

    Unknown action

No action responded to 10. Actions: clearance, create, destroy, download, edit, index, is_admin, new, show, su_required, and update

我希望它保持在同一页面上,并向用户提供下载提示,但我不确定我做错了什么。

我认为调用下载方法有问题

试试这个

<%= link_to "Show",:controller=>'controllername',:action=>'download',:id=>upload.id %>
'controllername',:action=>'download',:id=>upload.id%>

您必须在“controllername”处传递控制器名称。

理想情况下,如果您希望停留在同一页面上并向用户提供下载提示,您应该查看Ajax调用,但下面给出的代码也可以使用。单击“下载”链接后,将打开一个新的选项卡/窗口,向用户提供下载提示并关闭选项卡/窗口

还有
:method
参数to
link\u to
告诉它要使用哪个HTTP方法(POST、GET、DELETE、PUT)。要在控制器中引用“下载”方法,请使用
:action
参数

view
----
<%= link_to 'Show', upload, :action => :download, {:target => "_blank"} %>      

controller
----------
return send_file '/data_store/50692.pdf', :type => "application/pdf", :filename => "50692.pdf"
视图
----
:下载,{:target=>“\u blank”}%>
控制器
----------
返回send_file'/data_store/50692.pdf',:type=>“application/pdf”,:filename=>“50692.pdf”
view
----
<%= link_to 'Show', upload, :action => :download, {:target => "_blank"} %>      

controller
----------
return send_file '/data_store/50692.pdf', :type => "application/pdf", :filename => "50692.pdf"