Rails如何在方法之间传递对象

时间:2014-10-29 16:20:40

标签: ruby-on-rails mongoid

大家好!我有一个视图show,显示可以下载的文件的链接。我有一个方法 - download_file,它发送文件

def download_file
@myfile = Myfile.find(params[:myfile]) <======this line does not work
    send_file Rails.root.join(@myfile.myfile_directory,  "file.csv"),  :type=>"application/csv", :x_sendfile=>true
    flash[:notice] = "Your file has been downloaded" 
end

我的问题是 - 如何从视图download_file将Myfile对象传递给控制器​​show方法? 我的观点

<td><%= @myfile.myfile_name %></td>
  <%= link_to "Download file" , :action => 'download_file' %>
<%= link_to 'Edit', edit_myfile_path(@myfile) %>

我在控制器中试过了:

@myfile = Myfile.find(params[:myfile])
@myfile = Myfile.find(params[:myfile]).first
@myfile = Myfile.find(params[:id])
 @myfile = Myfile.find(params[:id]).first

它不起作用。 非常感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

在您需要的routes.rb

resources :myfiles do
  member do 
    get :download_file
  end
end

然后,在您的观点<%= link_to "Download file" , download_file_my_file_path(@myfile) %>内。对于路由名称,请检查rake routes的输出以获取正确的路径名,因为我可能会弄错。