0

Rails 3 アプリでユーザーが複数のレコードを選択して破棄できるようにしようとしています。

次のように、製品インデックスに check_box_tag があります。

 <td><%= check_box_tag "product_ids_destroy[]", product.id %></td>

そして、インデックスに送信タグを追加しました:

<%= submit_tag "Delete Selected" %>

そして、製品コントローラーでメソッドを作成しました:

  def destroy_select
    product_ids = params["product_ids_destroy"]
    objs = Product.find(:all, :conditions => ["products.id IN (?)", product_ids])
    objs.each { |o| o.destroy}
  end

そして、routes.rb を定義しました:

  resources :products do
    collection do
      delete 'destroy_select'
    end

メソッドはコンソールで機能します。インデックスから収集した product_ids をコントローラー メソッドに「接続」して、各レコードを破棄するにはどうすればよいですか? submit タグのオプションとしてメソッドを追加できますか? また、破棄する前に確認を追加したい場合、これを送信タグに追加しますか?

4

2 に答える 2

0

を使用してルートを確認してください

bundle exec rake routes

次に、フォームで、フォームのアクションをその名前付きルートと削除するメソッドに設定できます

コントローラーのアクションの小さなリファクタリングを行うことができます

def destroy_select
  Product.destroy_all(params["product_ids_destroy"]) unless params["product_ids_destroy"].blank?
end
于 2012-08-30T01:54:52.100 に答える
0

そのフォーム送信をコントローラーの正しいアクションにフックするには、フォームで DELETE メソッドを使用する必要があります。そのオプション ( :method => :delete) は、form_forまたはform_tag関数呼び出しで設定する必要があります。

submit_tagただし、確認メッセージをそれ自体にフックすることはできます。docs:confirm => 'My message?'のオプションを確認してください。

それが役立つことを願っています!

于 2012-08-30T02:01:16.743 に答える