处理自定义表单的ActiveAdmin指南(自定义操作?)

时间:2013-12-17 05:13:20

标签: ruby-on-rails activeadmin formtastic

我正在寻找一些使用ActiveAdmin制作自定义表单的指导。这不是常规形式,但实际上我需要一些JavaScript。但是,我现在不熟悉ActiveAdmin。

我有一个表格会收集产品清单。每次我将产品添加到列表中时,我都需要重新计算订单的小计(基于数量和唯一价格)。

添加产品我使用的是常规Formtastic,如下所示:

f.inputs "Product List" do
  f.has_many :product_lists do |detail|
    detail.input  :good_id, :as => :select,
                  :collection => Good.accessible_by(current_ability, :read),
                  :input_html => { class: 'chosen-select' },
                  :include_blank => true
    detail.input :quantity, :input_html => { :value => 1 }
  end
end

然而,我遇到了多个问题:

  • 每次在列表中添加新产品时,我应该如何重新计算小计?我应该使用custom collection action吗?我甚至考虑在其中使用Backbone App来处理整个过程。
  • 有没有更好的方法,而不是使用自定义操作?
  • 是否有一种很好的方法只为新表单使用自定义操作?我能够制作一个新的,但我无法控制表格。
  • 如何更好地控制表单面板?我无法在表单块中添加面板:(。

1 个答案:

答案 0 :(得分:1)

如果您使用主分支中的> = 1.0.0.pre:

  • 您应该能够在has_many内包装f.inputs块 阻止,如果你想让他们在一个面板中。
  • 有回调 在添加/删除之前/之后有多个表单。你可能会挂钩 进入重新计算(至少在删除)。对于添加, 您可能需要考虑添加更改侦听器 应该触发重新计算。您可以在页面加载时添加该侦听器 和/或添加新项目后。

添加项目时,是否在服务器端或客户端重新计算总数?如果在服务器端,则应在提交表单后更新总计,并且该逻辑可能属于您的模型。 AA有很多为表单添加字段,然后提交然后提交。在提交整个表单之前,添加新的嵌套字段集不会更改服务器上的任何内容。如果它应该在没有提交的情况下更新,你需要自己处理ajax请求和响应,但是你应该能够简单地使用默认操作并请求返回json格式或创建自定义javascript模板。