首次使用rails,我正在尝试创建一个下载链接,以便从文件系统中获取内容。
在我看来,我有
<%= link_to 'Show', upload, :method => :download %>
我的控制器中的'下载'方法如下:
def download
@upload = Upload.find(params[:id])
send_file '/data_store/50692.pdf'
这是必要的,因为我对谁可以查看这个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
我希望它保留在同一页面上,并为用户提供下载提示,但我不确定我做错了什么。
答案 0 :(得分:2)
理想情况下,如果您希望保持同一页面并向用户提供下载提示,那么您应该查看Ajax调用,但下面给出的代码也可以使用。单击“下载”链接后,它将打开一个新的选项卡/窗口,为用户提供下载提示并关闭选项卡/窗口。
:method
的{{1}}参数也告诉它使用哪种HTTP方法(POST,GET,DELETE,PUT)。要在控制器中引用“下载”方法,请使用link_to
参数。
:action
答案 1 :(得分:0)
我认为这是调用下载方法中的一个问题。
试试这个
<%= link_to "Show",:controller=>'controllername',:action=>'download',:id=>upload.id %>
您必须在“controllername”的位置传递您的控制器名称。