1
我的模式被稱爲項目,其中有一個字符串的文件名和一個字符串位置。我有一個上傳表單,它應該將文件作爲輸入,將其上傳到public/data /,並將文件名和路徑存儲爲新的Projects對象。當我嘗試上傳文件時,我得到了「nil:NilClass for roR文件上傳」的未定義方法[]。「該錯誤是在我的控制器文件的86行,這是 「名稱=參數[:上傳] [:文件] .original_filename」未定義的方法`[]」爲零:NilClass爲RoR的文件上載
檢視:
<%= form_tag({ :action => 'upload' }, :multipart => true) %>
Upload file: <%= file_field("form", "file") %>
<br />
<%= submit_tag("Upload file") %>
控制器:
def upload
### THE LINE BELOW IS WHERE THE ERROR OCCURS
name = params[:upload][:file].original_filename
directory = "/public/data"
path = File.join(directory, name)
File.open(path, "wb") { |f| f.write(params[:upload][:file].read) }
@project = Project.new({:filename => name, :location => path})
respond_to do |format|
if @project.save
format.html { redirect_to @project, notice: 'Project was successfully created.' }
format.json { render json: @project, status: :created, location: @project }
else
format.html { render action: "new" }
format.json { render json: @project.errors, status: :unprocessable_entity }
end
end
end
誰能猜到有什麼不對?我是RoR,Ruby,新手。
編輯:我試了params [:form [:file]]而不是params [:upload] [:file],並在同一行中得到錯誤「無法將Symbol轉換爲Integer」。
檢查你的參數。 params [:upload]爲零。嘗試params [:上傳[文件]]也許? – oldergod
嘗試that..same問題:( – user1436111
檢查您的PARAMS – oldergod