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

时间:2016-04-08 11:57:17

标签: ruby-on-rails activerecord rails-activerecord activeadmin active-record-query

我在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 记录的名称,则即使在刷新页面后,其更改也不会反映在表单中。

Form has following options

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

在DB中编辑值Bla to Foo后,我们的表单仍显示相同的旧结果。虽然db中的值已经改变了。

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

知道我哪里错了吗?

1 个答案:

答案 0 :(得分:2)

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

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!!"

我认为块作为参数传递,而函数调用后的块与参数周围的()相比不那么令人困惑(稍微)。它们不是必需的。