2014-10-29 1 views
0

모두! 다운로드 할 수있는 파일에 대한 링크를 표시하는보기 show이 있습니다. 어떻게보기 show에서 컨트롤러 download_file 방법에 MYFILE 개체를 전달할 수 있습니다 -방법 사이에 객체를 전달하는 레일

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 - 나는 방법이 있나요?

<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 당신은 당신의보기 <%= link_to "Download file" , download_file_my_file_path(@myfile) %> 내에서, 그리고

resources :myfiles do 
    member do 
    get :download_file 
    end 
end 

이 필요합니다. 경로 이름에 대해 올바른 경로 이름에 대해 rake routes의 출력을 확인하십시오. 오인되었을 수 있습니다.

+0

안녕하세요! 도와 주셔서 감사합니다! 나는 그것을 시도하고 오류가 발생했다. 'undefined method'[]'for nil : NilClass' –

+0

그리고 그것은 ...? – blelump

+0

'download_file_my_files_path (: id => @ myfile.id)'가 잘 작동합니다. –