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"
   }
}

フォトショーページで、フォトアルバムから写真の1つを削除します。写真は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. ビューからの削除(作成時または更新時)を制御する場合は、名前がartist [photos_attributes] [1] [_ destroy]で、値がtrueの非表示フィールド(またはチェックボックスまたは必要なもの)をhtmlに追加できます。

  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 に答える