Почему file.original_filename не работает в Ruby on Rails? - PullRequest
0 голосов
/ 04 ноября 2011

Я внедряю несколько недель в Ruby. И что я хочу сделать, это прочитать в CSV-файл, который я затем помещаю во временный файл, чтобы я мог получить к нему доступ в следующих представлениях и манипулировать данными. Я реализовал все как примеры в Интернете, но я всегда получаю ошибку: неопределенный метод `original_filename 'для nil: NilClass

Мой код на мой взгляд:

<% form_for :dump, :url=>{:controller=>"project_importer", :action=>"match"}, :html => { :multipart => true } do |f| -%>
<table">
   <tr>
     <td>
      <label for="dump_file">
        Select a CSV File :
      </label>
     </td>
     <td >
       <%= f.file_field :file -%>
     </td>
   </tr>

 </table>

и затем в моем контроллере у меня есть:

file = params[:file]


   @original_filename = file.original_filename
    tmpfile = Tempfile.new("redmine_user_importer")
    if tmpfile
      tmpfile.write(file.read)
      tmpfile.close
      tmpfilename = File.basename(tmpfile.path)
      if !$tmpfiles
        $tmpfiles = Hash.new
      end
      $tmpfiles[tmpfilename] = tmpfile
    else
      flash[:error] = "Cannot save import file."
      return
    end

Я действительно не знаю, что я делаю неправильно, я надеюсь, что кто-то может мне помочь. Файл param не пустой.

Заранее спасибо!

1 Ответ

1 голос
/ 04 ноября 2011

1001 * попробовать *

params[:dump][:file]

вместо

params[:file]

Или распечатать

<%= params.inspect %>

на целевой странице, чтобы проверить ваши параметры, если это не работает.

...