我该怎么办?此代码不起作用:
<% 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 :(得分: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
方法的任何路径,可能允许他们在您的系统上下载任何文件。