使用select标记销毁多个记录

时间:2012-08-29 20:41:58

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

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

2 个答案:

答案 0 :(得分:0)

使用

检查您的路线
bundle exec rake routes

然后在表单上,​​您可以将表单的操作设置为该命名路由和删除方法

你可以对控制器的动作做一个微小的重构

def destroy_select
  Product.destroy_all(params["product_ids_destroy"]) unless params["product_ids_destroy"].blank?
end

答案 1 :(得分:0)

要将表单提交挂钩到控制器中的正确操作中,您必须使表单使用DELETE方法。必须在:method => :deleteform_for函数调用中设置该选项(form_tag)。

但是,您可以将确认消息挂钩到submit_tag本身。查看the docs中的:confirm => 'My message?'选项。

希望有所帮助!