2014-02-06 42 views
-2

我該怎麼辦?此代碼不起作用:從視圖(link_to)到控制器的紅寶石pass var

所有的
<% Dir.entries(Pathname.new("/Cd") + params[:project_id] + Pathname.new("art"))[2..-1].each do |file_name| %> 
<li><%= link_to file_name, {:action => 'download' } :params=> {:file_name => path} %></li> 
<% end %> 


def download 
@path = :params(path) 
    send_file(path) 
end 

回答

0

首先,它params[:path],不:params(path),所以你download方法應該是這樣的:

def download 
    @path = params[:path] 
    send_file(@path) 
end 

其次,你link_to是錯誤的。它應該看起來像這樣:

<%= link_to file_name, { :action => 'download', :path => file_name } %> 

順便說一句,你在做什麼是非常不安全的。用戶可以發送任何路徑到download方法,可能允許他們在您的系統上下載任何文件。

+0

謝謝,它的工作。這個插件將在本地網絡中工作。我不需要安全 –

+0

你能告訴我如何生成鏈接。我的代碼不起作用:send_file(「/ cd /」+ path) –