2010-11-10 48 views
1

第一次使用rails时,我试图创建一个下载链接以从文件系统中获取某些内容。Rails:send_file不会导致下载,而是链接到'show'控制器方法

在我看来,我有

<%= 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

我认为这是调用下载方法的问题。

试试这个

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

必须在地方 “controllername” 通过控制器的名字。

2

理想情况下,如果您希望保持在同一页面上并为用户提供下载提示,但您应该查看Ajax调用,但下面给出的代码也可以使用。点击“下载”链接后,它会打开一个新标签页/窗口,向用户提供下载提示并关闭标签页/窗口。

另外:method参数为link_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" 
相关问题