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!!"
结束
我认为作为参数传递的块和函数调用后的块与参数周围的 ()
不那么混淆(稍微)。它们不是必需的。
我在 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!!"
结束
我认为作为参数传递的块和函数调用后的块与参数周围的 ()
不那么混淆(稍微)。它们不是必需的。