删除rails中不需要的参数

时间:2012-12-22 11:05:42

标签: ruby-on-rails ruby-on-rails-3

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。

3 个答案:

答案 0 :(得分:3)

有几种方法:

  1. 在创建时,您只需使用js删除html块。

  2. 如果您想控制视图中的删除(在创建或更新时),您可以使用名称艺术家[photos_attributes] [1] [_ destroy]添加隐藏字段(或复选框或您想要的内容)到您的html价值是真的。

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

答案 1 :(得分:1)

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

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

答案 2 :(得分:1)

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