1
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

我删除了这条记录,但我的参数显示了该 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。

4

3 回答 3

3

有几种方法:

  1. 在创建时,您可以简单地使用 js 删除 html 块。

  2. 如果您想控制视图中的删除(在创建或更新时),您可以将隐藏字段(或复选框或您想要的)添加到您的 html 中,名称为艺术家 [photos_attributes][1][_destroy],值为 true。

  3. 如果在控制器中您知道要删除的元素,您可以在更新属性之前编写 params[:artist][:photos_attributes].delete('1') 。

于 2012-12-22T11:35:20.517 回答
1

params[:artist]只是一个哈希,因此您可以执行以下操作:

params[:artist][:photos_attributes].delete('1')

于 2012-12-22T11:28:15.980 回答
1

用ajax删除记录后,也要删除页面中相应的HTML块。

于 2012-12-22T11:31:57.667 回答