2

感谢Rails Formtastic:向选项标签添加“数据-”字段我得到了一个简单的解决方案,可以在我的 ActiveAdmin 表单中的选项中添加数据字段。但是,现在我想从不同的表(模型)中获取数据值。我是一个完全的rails新手,在我去的时候试图弄清楚事情,希望有人能引导我正确地解决这个问题。

所以,我的 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>

这适用于 Product 模型, whichhas_many :attribute_definitions, through: :product_attributes和每个 AttributeDefinition belongs_to :input_type, class_name: "AttributeInputType"。所以我试图到达与 AttributeDefinition 的 input_type_id 匹配的 AtributeInputType 的 input_Type 字段(字符串)(adef.input_type_id上面)。

我可以获得ID,并且数据类型属性生成正常,所以我认为我的问题只是基本不知道如何通过ID提取该字符串字段。任何人都可以指出我正确的方向吗?谢谢!

4

1 回答 1

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)

trynil如果未找到关联的对象,则返回。

于 2013-10-09T21:44:50.053 回答