首页 > 解决方案 > 带有 ActiveAdmin 的 text_field_tag

问题描述

我很难使用 ActiveAdmin 和他们的 DSL。我正在使用它来构建我的管理员,并且在某些时候我需要有一个text_field_tag; 我的意思是一些与我正在处理的模型无关的字段,这些字段将与模型相关的数据一起发送。

基本上是一个自定义文本字段。没有什么太疯狂了。

所以我建立了这个

panel 'Send payment authorization' do
  active_admin_form_for EventPaymentAuthorization.new, url: { action: :send_event_payment_authorization } do |f|
    f.inputs do
      f.input :body, as: :text

      f.text_field_tag :line_items_label
      f.text_field_tag :line_items_amount

      f.input :fees_in_cents, as: :select, collection: [:free, :automatic], prompt: true, selected: :automatic
    end
    f.actions do
      f.action :submit, label: 'Create payment authorization'
    end
  end
end

f.text_field_tagActiveAdmin 简单地忽略了。这是为什么?它不会引发任何错误,但也不会显示。

我需要自定义不相关输入的原因是因为line_items在我的示例中是一个 JSONB,其值例如[{amount: 0.0, label: 'Hello'}],我不相信它可以通过 Formtastic 或 ActiveAdmin 本地处理。在发送数据时能够创建自定义输入也总是好的。

标签: ruby-on-railsactiveadminformtastic

解决方案


在 ActiveAdmin 中使用 JSON 有点棘手,这在很大程度上取决于您的需求。最快的方法是使用activeadmin_json_editor gem。我还写了一篇关于在 ActiveAdmin 中使用 JSON的博客文章,其中包含更多细节和另一种方法,这可能更适合您的需求,因为看起来您不仅仅是在 JSON 字段中处理任意数据。


推荐阅读