2014-02-18 4 views
0

У меня есть это в индексе (pieces_path)загрузка файла, не такой файл или каталог - рельсы 4

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

И это в контроллере штук

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

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

    end 
    redirect_to pieces_path 
end 

Наконец маршруты

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

Идея состоит в том, чтобы прочитать файл в представлении, затем сделать что-то с ним, а не сохранять его в базе данных, а затем вернуться к предыдущему стр.

Но когда я тестирую его, я получаю сообщение об ошибке «Нет такого файла или каталога» при загрузке файла.

Любые идеи ?, что я делаю неправильно?

ответ

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, 'г') 'в но вы мне очень помогаете – nnn7867

+0

Добро пожаловать. Я думаю, что 'Rack' анализирует файл, используя [этот класс] (http://rack.rubyforge.org/doc/Multipart/UploadedFile.html), поэтому также должен быть прав:' File.read (file_data.original_filename, 'r «)'. – markets

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