2011-11-04 26 views
0

私はRubyで数週間を実装しています。そして私がしたいことは、次のビューでそれにアクセスしてデータを操作できるように、一時ファイルに入れたCSVファイルで読み込まれます。私は、インターネット上の例のようにすべてのものを実装しているが、私は常にエラーを取得:nilのために未定義のメソッド `original_filenameを」:NilClassなぜfile.original_filenameはRuby on Railsで動作しないのですか?

私の見解では私のコードは次のとおりです。私のコントローラで、その後

<% 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は空ではありません。

ありがとうございます!

+0

サーバーログに入ってくるパラメータを入力することはできますか? – jaydel

答えて

1

このdoesntの仕事ならば、あなたのparamsを検査する対象のページ

params[:dump][:file] 

代わりの

params[:file] 

または印刷

<%= params.inspect %> 

してみてください。

+0

私は最初のオプションを試しましたが、エラーが発生しました: 未定義メソッド '+ 'はnil:NilClassです。 – user1027319

+0

これは許可されていますか?:file = params [:dump] [:file]、このコードからエラーが発生しているので – user1027319

+0

これは問題なく動作しますが、 //stackoverflow.com/questions/8008979/system-doesnt-want-to-write-tmpfile-in-ruby-on-rails?ありがとう – user1027319

関連する問題