2014-10-29 3 views
0

Все! У меня есть вид 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 

Мой вопрос - Как я могу передать Myfile объект контроллера download_file метода с точки зрения 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

В вашей routes.rb вам нужно

resources :myfiles do 
    member do 
    get :download_file 
    end 
end 

Затем в ваш взгляд <%= link_to "Download file" , download_file_my_file_path(@myfile) %>. Для имени маршрута проверьте вывод rake routes на правильное имя пути, потому что я могу ошибаться.

+0

Привет! Спасибо за помощь! Я попробовал это и получил ошибку, 'undefined method' [] 'для nil: NilClass' –

+0

И он выбрасывает из ...? – blelump

+0

Только что узнал 'download_file_my_files_path (: id => @ myfile.id)' отлично работает! –

Смежные вопросы