我在管理/旅行中显示行程列表,对于所选择的行程,我有批量操作,生成新闻稿的html代码模式(使用所选行程的信息完成)。
batch_action :batch_action, method: :post do |ids|
#my process
render "admin/trips/generate_newsletter.html.erb"
有效。但是在视图中,就在html代码之前我有一个form_tag:
<%= form_tag({action: "batch_action"}, class: "formtastic") do %>
表单只包含text_area,管理员可以在其中添加简报的评论。我们的想法是,当我们发送表单时,页面会刷新,保持选择的行程并将管理员注释添加到html代码中。
现在当我提交表单时,我收到一个错误:'找不到批处理操作'“'。
变量@_params包含:
{"utf8"=>"✓","authenticity_token"=>"pzqtPMxhB9G83UYad2olCF4O79cK4+mf+R0VBOR61uo=", "admin_text"=>"Admin comment", "commit"=>"Ajouter", "action"=>"batch_action", "controller"=>"admin/trips"}
我尝试了很多东西,但是我没有看到答案,也许我想做的事情是不可能的。
答案 0 :(得分:0)
ActiveAdmin 1.0提供了一个DSL,用于在批处理操作中创建自定义表单。
在app / admin / trips.rb
中batch_action :generate_newsletter, form: {
comment: :text,
send_now: :checkbox
} do |ids, inputs|
# load selected trips
trips = Trip.find(ids) # selected trips
# Generate Newsletter from trips array
newsletter = Newsletter.create_from(trips)
if inputs[:send_now] == 'on'
# send generated newsletter
NewsletterMailer.send_email(newsletter).deliver
# return to admin/trips#index
redirect_to collection_path, notice: 'Sent newsletter'
else
# show generated newsletter
redirect_to admin_newsletter_path(newsletter), notice: 'Generated newsletter'
end
end
但是,我不知道在页面刷新后保留ID的内置方法。为了补偿,我建议创建一个填充了所选行程的新闻稿(如上所示)。甚至可以在Newsletter和Trips之间建立关联,以便您可以重新排序或删除简报的旅行。