ruby将var从视图(link_to)传递给控制器

时间:2014-02-06 11:50:20

标签: ruby-on-rails ruby

我该怎么办?此代码不起作用:

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

1 个答案:

答案 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方法的任何路径,可能允许他们在您的系统上下载任何文件。