Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails ruby将变量从视图(链接到)传递到控制器_Ruby On Rails_Ruby - Fatal编程技术网

Ruby on rails ruby将变量从视图(链接到)传递到控制器

Ruby on rails ruby将变量从视图(链接到)传递到控制器,ruby-on-rails,ruby,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> &l

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

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

  • 'download'}:params=>{:file_name=>path}%>
  • def下载 @路径=:参数(路径) 发送文件(路径) 结束
    首先,它是
    params[:path]
    ,而不是
    :params(path)
    ,因此您的
    下载方法应该如下所示:

    def download
      @path = params[:path]
      send_file(@path)
    end
    
    <%= link_to file_name, { :action => 'download', :path => file_name } %>
    
    第二,你的观点是错误的。它应该是这样的:

    def download
      @path = params[:path]
      send_file(@path)
    end
    
    <%= link_to file_name, { :action => 'download', :path => file_name } %>
    
    'download',:path=>文件名}%>
    

    顺便说一句,你所做的是非常不安全的。用户可以将任何路径发送到
    下载
    方法,从而允许他们下载您系统上的任何文件。

    谢谢,这是一个很好的方法。此插件将在本地网络中工作。我不需要securityCan你告诉我如何生成链接。我的代码不工作:发送_文件(“/cd/”+路径)