2014-02-18 2 views
0

내가 인덱스에 조각 컨트롤러 마지막으로업로드 파일이 아닌 파일 또는 디렉토리 - 4

def upload 
    file_data = params[:data] 
    File.read(file_data, 'r') do |file| 

    file.each do |line| 
     ## .... ## 
    end 

    end 
    redirect_to pieces_path 
end 

에서 (pieces_path)

<%= form_tag (upload_pieces_path) do%> 
    <%= file_field_tag 'data' %> 
    <%= submit_tag %> 
<% end %> 

그리고이 경로를이이 레일

match '/upload_pieces', to: 'pieces#upload', via: 'post' 

아이디어는보기에서 파일을 읽은 다음 그와 함께 뭔가를하고 데이터베이스에 저장하지 않고 이전 파일로 돌아가는 것입니다. 페이지.

하지만 테스트 할 때 파일을 업로드 할 때 "No such file or directory"오류가 나타납니다.

어떤 아이디어?, 내가 뭘 잘못하고있는거야?

답변

5

당신은 multipart 옵션 form_tag에 추가해야합니다 :

<%= form_tag(upload_pieces_path, multipart: true) do %> 
    <%= file_field_tag 'data' %> 
    <%= submit_tag %> 
<% end %> 
+0

당신에게 시장 감사 당신은 단지에있는 '파일 = file_data.read' 대신'File.read (file_data,'R ')를'건너 뛰기 컨트롤러하지만 많이 도와주세요 – nnn7867

+0

당신은 오신 것을 환영합니다. 나는'Rack'이 [this class] (http://rack.rubyforge.org/doc/Multipart/UploadedFile.html)를 사용하여 파일을 분석한다고 생각합니다. 따라서 유효해야합니다 :'File.read (file_data.original_filename, 'r ')'. – markets

관련 문제