18

我有一个选择字段,我想在它上面放置一个名为 name 的自定义属性,我尝试这样做:

 <%= f.association  :in_charge, :collection => User.lawyer.map{ |l| [l.name, l.id, {:name => l.name.downcase}] } %>    

它可以工作并生成额外的属性,但有一个问题,选择值属性更改为模型名称属性,在本例中为 l.name。我更改了位置并将 l.id 放在首位,但显示了 id 属性,它们被重复了,知道为什么会这样吗?

是否有另一种方法可以在关联选择字段中定义自定义属性?

4

2 回答 2

27

使用由 SimpleForm 输入包装的 Rails select()表单助手。

 <%= f.input :in_charge do %>
   <%= f.select :county_id, User.lawyer.map{ |l| [l.name, l.id, {:name => l.name.downcase}] } %>
 <% end %>

您的代码无法按预期工作,因为在底层,SimpleForm 调用了不支持选项标签中的额外属性的collection_select() 。

SimpleForm 自述文件也有解决方案。但是直到我自己解决了这个问题我才注意到:)

于 2012-12-13T16:09:53.787 回答
1

对于记录,这似乎现在正在工作:

f.association :product, collection: Product.all.map { |product| [product.name, product.id, {data: {description: product.description}}] }

SimpleForm 版本:

$ bundle show simple_form
/Users/josh/.rvm/gems/ruby-2.4.1@a4aa2/gems/simple_form-4.1.0
于 2019-10-12T10:27:27.397 回答