Railscast episode 198を使用して、チェックボックスを使用して複数のオブジェクトを個別に編集できるフォームを作成しました。私は変更したい項目のボックスをチェックした後、 "編集"または "削除"アクションを選択できるようにしたいと思います。私は編集アクションのための私のphotos_controller.rbにこれを追加しました:複数のオブジェクトを同じレール形式で削除または編集する
def edit_individual
@photos = Photo.find(params[:photo_ids])
end
def update_individual
@user = current_user
@photos = Photo.update(params[:photos].keys, params[:photos].values).reject { |p| p.errors.empty? }
if @photos.empty?
flash[:notice] = "Products updated"
redirect_to photos_url
else
render :action => "edit_individual"
end
end
そして、私の見解では、私はそれを表示するためにそれぞれの写真を通じて、このコード行Iループを追加しています:
<%= form_tag edit_individual_photos_path, :method => "get" do %>
... #loop through all photos and add a checkbox
<%= check_box_tag "photo_ids[]", photo.id %>
<%= submit_tag "Edit", :class => "btn btn-large btn-inverse" %>
これは問題なく動作しますが、フォームに別の送信タグを追加して、選択したアイテムを編集するのではなく、削除する方法がわかりません。誰も私がパラメータとしてphoto_idsの配列を渡してそれらを破壊する方法を知っていますか?
ボタンがクリックされた区別するためにどのように私に語った - 感謝を。私はまだdestroy_actionにphoto_idsの配列を渡して、それらのすべてを削除することはできません。私はこれがリクエストかどうか、別の理由があるかどうかを特定しているかどうか分かりません。 – kcurtin
このようにすると、あなたのIDはすべてparams [:photo_ids]の中に入り、編集アクション。編集アクションでは 'if params [:commit] == 'Delete''と内部ですべてのIDを繰り返し処理し、見つかったオブジェクトを破棄しなければなりません。 – Ashitaka
クール - ありがとうございます。私はそれを理解することができました。私が使い終わったコードで回答を追加しよう – kcurtin