【问题标题】:Rails Formtastic: adding “data-” field to option tag with value from related tableRails Formtastic:将“data-”字段添加到带有相关表值的选项标签
【发布时间】:2013-10-10 05:50:11
【问题描述】:

感谢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,每个属性定义belongs_to :input_type, class_name: "AttributeInputType"。所以我试图到达与 AttributeDefinition 的 input_type_id 匹配的 AtributeInputType 的 input_Type 字段(字符串)(上面的adef.input_type_id)。

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

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-3 formtastic


    【解决方案1】:

    替换这个

    AttributeInputType.where(:id => adef.input_type_id).select("input_type")
    

    adef.input_type.input_type
    

    adef.input_type 返回与adef 关联的AttributeInputType 对象。 .input_type 返回 AttributeInputType 对象的 input_type 属性。

    如果adef 没有任何input_type,上述语句将引发错误。所以一个更强大的选择是

     adef.input_type.try(:input_type)
    

    如果未找到关联的对象,try 返回nil

    【讨论】:

    • 谢谢!这就是我之前尝试过的——至少我是这么认为的。我一定是有错字,然后认为我的语法错误,因为现在它可以正常工作了。非常感谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-02-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-04
    • 1970-01-01
    • 2018-05-27
    相关资源
    最近更新 更多