我正在尝试允许用户在我的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“连接”到控制器方法以销毁每条记录?我可以在提交标记中添加该方法作为选项吗?此外,如果我想在销毁之前添加确认,我是否将其添加到我的提交标签?
答案 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 => :delete
或form_for
函数调用中设置该选项(form_tag
)。
但是,您可以将确认消息挂钩到submit_tag
本身。查看the docs中的:confirm => 'My message?'
选项。
希望有所帮助!