如何在ActiveAdmin中呈现包含表单的批处理操作?

时间:2015-05-26 08:25:34

标签: ruby-on-rails activeadmin

我在管理/旅行中显示行程列表,对于所选择的行程,我有批量操作,生成新闻稿的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"}

我尝试了很多东西,但是我没有看到答案,也许我想做的事情是不可能的。

1 个答案:

答案 0 :(得分:0)

ActiveAdmin 1.0提供了一个DSL,用于在批处理操作中创建自定义表单。

enter image description here

在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之间建立关联,以便您可以重新排序或删除简报的旅行。

CITE:http://activeadmin.info/docs/9-batch-actions.html