9

我的 ActiveAdmin 注册模型有一个“活动”布尔字段。我想包含一个批处理操作来一次“激活”多个记录。

我正在尝试按照以下说明进行操作:

http://activeadmin.info/docs/9-batch-actions.html

进行自定义批处理操作,我遇到了两个问题。

我有这个:

ActiveAdmin.register Venue do

  batch_action :deactivate do |selection|
    Venue.find(selection).each do |v|
      v.active = false
    end
  end
end

当我尝试激活某些东西时,我得到一个找不到模板的错误。它正在寻找“batch_action”模板。我在该文档中没有看到任何关于需要添加模板的内容。如果我添加一个具有该名称的模板,错误就会消失并显示模板......这当然不是我想要的。我希望它只是重新显示索引。

在任何一种情况下(有或没有适当的模板),模型都不会被更新。我可以在日志中看到它只是对选定的记录进行选择而没有做任何其他事情。

4

1 回答 1

21

我通过执行以下操作摆脱了这些问题:

batch_action :activate do |selection|
  Venue.find(selection).each do |v|
    v.active = true
    v.save
  end
  redirect_to :back  #this ensures any current filter stays active
end

“保存”部分似乎很明显,但文档中的示例在我第一次尝试时让我失望了。对于文档来说,这似乎是一个更相关的例子。

于 2012-12-20T02:10:48.270 回答