我的模型名为 Projects,它有一个字符串文件名和一个字符串位置。我有一个上传表单,它应该将文件作为输入,将其上传到 public/data/,并将文件名和路径存储为新的 Projects 对象。当我尝试上传文件时,我得到“nil:NilClass for RoR 文件上传的未定义方法`[]'”。错误在我的控制器文件的第 86 行,即“name = params[:upload][:file].original_filename”
看法:
<%= 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],并在同一行出现错误“无法将符号转换为整数”。