Parameters: {
"artist"=>{
"photos_attributes"=> {
"0"=>{"id"=>"96", "description"=>"", "upload_on_facebook"=>"0"},
"1"=>{"id"=>"97"}
},
"professional_nickname" => "testing",
"authenticity_token"=>"xyz",
"utf8"=>"✓", "id"=>"testing"
}
}
在我的照片显示页面中,我删除了相册中的一张照片。照片已成功删除使用ajax(也从表中删除)。但之后我提交了其他图像的更新说明然后就出现了错误。
Couldn't find Photo with ID=97 for Artist with ID=31
我删除了这条记录,但是我的params显示了Id。
我的控制器更新操作
if @artist.update_attributes(params[:artist])
flash[:notice] = "Artist record been updated successfully"
redirect_to admin_artists_url
else
render :edit
end
使用ajax删除后如何从参数中删除此“1”=> {“id”=>“97”}。我正在使用semantic_form_for。
答案 0 :(得分:3)
有几种方法:
在创建时,您只需使用js删除html块。
如果您想控制视图中的删除(在创建或更新时),您可以使用名称艺术家[photos_attributes] [1] [_ destroy]添加隐藏字段(或复选框或您想要的内容)到您的html价值是真的。
如果在控制器中你知道要删除的元素,你可以在更新属性之前写下参数[:artist] [:photos_attributes] .delete('1')。
答案 1 :(得分:1)
params[:artist]
只是一个哈希值,因此您可以执行以下操作:
params[:artist][:photos_attributes].delete('1')
答案 2 :(得分:1)
使用ajax删除记录后,还应删除页面中相应的HTML块。