提交表单时,会传递这些参数。
Parameters:
{"utf8"=>"✓",
"_method"=>"copyfile",
"authenticity_token"=>"yM2v0dJysGuw7zRIhuhY7xHMywuDRjfBqzpJc0/LCqE=",
"redocument"=>{"odocument_id"=>"14"},
"commit"=>"Update Redocument",
"method"=>"copyfile",
"id"=>"66"}
我想在控制器中传递的参数中引用odocument_id
。
在我的控制器中,我有这个
def copyfile
@oldfile = Redocument.find(params[:id])
@newfile = Redocument.find(params[:id]).dup
@newfile.odocument_id = params[:odocument_id]
if @newfile.save!
dupfile(@oldfile.redocument.to_s, @newfile.redocument.to_s)
flash[:notice] = 'Record was successfully cloned.'
else
flash[:notice] = 'Record ERROR: Item can\'t be cloned.'
end
redirect_to(:back)
end
我已成功在新ID文件夹中创建文件。但是,我正在对我的目录结构进行分类,如odocument_id / redocument_id /。在调用函数dupfile创建文件夹和副本之前,我无法更新odocument_id。当我看到@newfile上传到MySQL时,它会创建一个NULL值。
答案 0 :(得分:1)
您没有正确访问:odocument_id参数。正如您在获得的参数"redocument"=>{"odocument_id"=>"14"}
中看到的那样,“odocument_id”位于“redocument”参数内。所以你需要这样做:
@newfile.odocument_id = params[:redocument][:odocument_id]
您正在执行的params[:odocument_id]
不存在,因此您获得了空值。
另外,你可以做到
@newfile = @oldfile.dup
并且无需再次找到该文件。