大家好!我有一个视图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
它不起作用。 非常感谢您的帮助!
答案 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
的输出以获取正确的路径名,因为我可能会弄错。