感谢Rails Formtastic: adding "data-" field to option tag我得到了一个简单的解决方案,可以将我的ActiveAdmin表单中的选项添加到数据中。但是,现在我想从不同的表(模型)中获取数据值。我是一个全新的铁杆新手,试图在我走的时候解决问题,希望有人能指引我。
所以,我的ActiveAdmin表单中有这个:
att.input :attribute, :label => "Attribute:", :as => :select, :collection => AttributeDefinition.all.map { |adef| [adef.attribute_name, adef.id, {:"data-type" => AttributeInputType.where(:id => adef.input_type_id).select("input_type") } ] }
我希望最终得到的是一个选择元素,其中包含以下选项:
<option data-type="dropdown" value="4">Voltage</option>
但相反,我得到这样的选择:
<option data-type="#<ActiveRecord::Relation:0x6adb3f8>" value="4">Voltage</option>
这适用于产品型号,has_many :attribute_definitions, through: :product_attributes
和每个AttributeDefinition belongs_to :input_type, class_name: "AttributeInputType"
。所以我试图到达AtributeInputType的input_Type字段(字符串),该字段匹配AttributeDefinition(上面的adef.input_type_id
)的input_type_id。
我可以获取ID,并且数据类型属性生成正常,所以我认为我的问题只是基本不知道如何通过ID拉取该字符串字段。任何人都可以指出我正确的方向? 谢谢!
答案 0 :(得分:0)
替换此
AttributeInputType.where(:id => adef.input_type_id).select("input_type")
与
adef.input_type.input_type
adef.input_type
返回与AttributeInputType
相关联的adef
对象。 .input_type
返回input_type
对象的AttributeInputType
属性。
如果adef
没有任何input_type
,则上述语句会引发错误。所以更强大的选择是
adef.input_type.try(:input_type)
如果找不到关联的对象, try
将返回nil
。