Activeadmin 批处理操作缓存查询结果

Activeadmin batch action caching query result

我在 activeadmin 中使用批处理操作来显示表单,代码是

batch_action 'Assign something', form: {
      abc: Abc.order('name ASC').map{|s| [s.name, s.id]}.uniq
  } do |ids, inputs|
    ids.each do |id|
      job = Job.find(id)
      # does something here
    end
    redirect_to :back, notice: "Congrats!!"
  end

此代码生成完美的表单,但在此表单中生成的下拉列表具有缓存值。也就是说,如果我们修改任何 Abc 记录的 name ,即使刷新页面,其更改也不会反映在表单中。

Form has following options

<option value="6">Bla</option>
<option value="7">Alliance</option>

在数据库中将值 Bla 编辑为 Foo 后,我们的表单仍然显示相同的旧结果。尽管数据库中的值已更改。

After editing records. Though Bla should be changed to Foo now
<option value="6">Bla</option>
<option value="7">Alliance</option>

知道我哪里出错了吗?

根据这个doc,动态表单需要一个过程。

batch_action ('Assign something', form: ->{ {
  abc: Abc.order('name ASC').map{|s| [s.name, s.id]}.uniq
} }) do |ids, inputs|
ids.each do |id|
  job = Job.find(id)
  # does something here
end
redirect_to :back, notice: "Congrats!!"

结束

我认为作为参数传递的块和函数调用后的块与参数周围的 () 不那么混淆(稍微)。它们不是必需的。