ActiveAdmin / Formtastic自定义输入(JSON)

时间:2015-11-15 14:17:58

标签: ruby-on-rails json activeadmin formtastic jsonb

我的数据库中有一个json列(实际上是jsonb,但这里没关系)table items 只有普通

{
 "key1":"value1",
 "key2":"value2"
} 

结构。没有嵌套。

“键”实际上是指向属性表的类似外键的整数,看起来像

id | name
-----------
1  | Height
2  | Weight
3  | Color

我正在使用ActiveAdmin进行管理,并希望在编辑由选择输入文本字段组成的时获得自定义输入>,这将允许我:

  • 从属性表中选择一个属性或输入一个新属性,然后输入
  • 在文本字段中输入J​​SON。

无法弄清楚如何。

我尝试了什么以及我的问题是什么?

我在app / inputs / property_input.rb中创建了一个自定义输入:

class PropertyInput
    include Formtastic::Inputs::Base
    include Formtastic::Inputs::Base::Collections

    def to_html
        input_wrapping do
            label_html <<
            select_html <<
            text_html    
        end
    end

protected

    def select_html
        builder.select(input_name, collection, input_options, input_html_options)
    end

        include Formtastic::Inputs::Base::Stringish
        include Formtastic::Inputs::Base::Placeholder

    def text_html
        builder.text_field(input_name)
    end

end

从admin / item.rb

调用以下内容
f.input :property, as: :property, collection: ItemAttribute.all

我的问题是:

现在,select正确显示了属性的名称,但是text字段只显示了同一属性的id。如何解耦这两个字段并强制文本字段保存并从Item jsonb列中读取?

在这种情况下,我可能会说在项目和属性模型之间使用ActiveRecord关联很重要,因为我不确定它是否适用于持有“外键”的jsonb列。

0 个答案:

没有答案