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“连接”到控制器方法以销毁每条记录?我可以在提交标签中添加该方法作为选项吗?另外,如果我想在销毁之前添加确认,是否将其添加到我的提交标签中?

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_fororform_tag函数调用中设置。

不过,您可以将您的确认消息挂在submit_tag它本身上。查看文档:confirm => 'My message?'中的选项。

希望有帮助!

于 2012-08-30T02:01:16.743 回答