Rails:send_file不会导致下载,而是链接到'show'控制器方法

时间:2010-11-10 10:59:34

标签: ruby-on-rails download

首次使用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

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

2 个答案:

答案 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”的位置传递您的控制器名称。