如何在 Active Admin 自定义批处理操作中重新加载代码?
How to reload code in Active Admin Custom Batch Actions?
我在具有自定义批处理操作的 Rails 应用中使用活动管理员。
批处理操作是根据数据库中的最后 5 条记录创建的。请在下面找到附加的代码。
但是,当创建新记录(事件)时,批处理操作不会刷新。我想知道如何强制刷新?我可以调用一个函数来使批处理操作从新记录中刷新吗?谢谢
ActiveAdmin.register TimeLineMessage do
menu
menu label: 'Rundown page'
Event.order("created_at DESC").limit(5).reload.each do |event|
batch_action ("Move to " + event.name.to_s).to_sym do |ids|
TimeLineMessage.find(ids).each do |tlm|
tlm.event_id = event.id
tlm.save
end
redirect_to collection_path, alert: "The content tiles have been moved to "+ event.name.to_s + " event "
end
end
你想走的路是行不通的,因为代码只在Rails/ActiveAdmin启动时执行一次。
但您还有其他方法可以选择:
batch_action :attach_to_event, form: {
event_id: -> { Event.order("created_at DESC").limit(5).pluck(:id, :name) }
} do |ids, inputs|
event = Event.find(inputs[:event_id])
TimeLineMessage.find(ids).each do |tlm|
tlm.event_id = event.id
tlm.save
end
redirect_to collection_path, alert: "The content tiles have been moved to "+ event.name.to_s + " event "
end
代码未经我测试,但这个想法应该可行。
对我有用的方法不是尝试强制 refresh/attach_to_event 而是在每次加载时重新计算,传递一个 lambda 作为表单的值。
详情见:
我在具有自定义批处理操作的 Rails 应用中使用活动管理员。 批处理操作是根据数据库中的最后 5 条记录创建的。请在下面找到附加的代码。
但是,当创建新记录(事件)时,批处理操作不会刷新。我想知道如何强制刷新?我可以调用一个函数来使批处理操作从新记录中刷新吗?谢谢
ActiveAdmin.register TimeLineMessage do
menu
menu label: 'Rundown page'
Event.order("created_at DESC").limit(5).reload.each do |event|
batch_action ("Move to " + event.name.to_s).to_sym do |ids|
TimeLineMessage.find(ids).each do |tlm|
tlm.event_id = event.id
tlm.save
end
redirect_to collection_path, alert: "The content tiles have been moved to "+ event.name.to_s + " event "
end
end
你想走的路是行不通的,因为代码只在Rails/ActiveAdmin启动时执行一次。
但您还有其他方法可以选择:
batch_action :attach_to_event, form: {
event_id: -> { Event.order("created_at DESC").limit(5).pluck(:id, :name) }
} do |ids, inputs|
event = Event.find(inputs[:event_id])
TimeLineMessage.find(ids).each do |tlm|
tlm.event_id = event.id
tlm.save
end
redirect_to collection_path, alert: "The content tiles have been moved to "+ event.name.to_s + " event "
end
代码未经我测试,但这个想法应该可行。
对我有用的方法不是尝试强制 refresh/attach_to_event 而是在每次加载时重新计算,传递一个 lambda 作为表单的值。
详情见: