2011-11-04 94 views
0

我正在Ruby中實施幾周。而我想要做的就是讀取一個csv文件,然後把它放在一個臨時文件中,這樣我就可以在下一個視圖中訪問它並操作數據。我已經實現一切都像在互聯網上的例子,但我總是得到錯誤:未定義的方法`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 

我真的不知道我在做什麼錯,我希望有人能幫助我。該文件參數不是空的。

在此先感謝!

+0

你能把參數傳入服務器日誌嗎? – jaydel

回答

1

嘗試

params[:dump][:file] 

,而不是

params[:file] 

或打印

<%= params.inspect %> 

目標頁面上,如果這不工作,檢查您的PARAMS。

+0

我嘗試了第一個選項,但是現在我收到錯誤: 未定義的方法'+'爲nil:NilClass。 – user1027319

+0

這是允許的嗎?:file = params [:轉儲] [:文件],因爲錯誤來自此代碼 – user1027319

+0

感謝它現在工作我認爲,但我現在有另一個問題,你可以請看看:http: //stackoverflow.com/questions/8008979/system-doesnt-want-to-write-tmpfile-in-ruby-on-rails?謝謝 – user1027319

相關問題