Rails简单表单自定义关联选择字段

时间:2012-06-11 03:46:25

标签: ruby-on-rails forms model simple-form

我有一个select字段,我想在其中添加一个名为name的自定义属性,我试着这样做:

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

它工作并生成额外属性但是存在问题,选择值属性变为模型名称属性,在本例中为l.name。我更改了地方并首先放置了l.id但是显示了id属性,它们是重复的,任何想法为什么会发生这种情况?

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

2 个答案:

答案 0 :(得分:25)

使用Rails select()表单帮助程序,由SimpleForm输入包装。

 <%= 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自述文件也有solution。但我没注意到,直到我自己解决了这个问题:)

答案 1 :(得分:0)

为了记录,这似乎正在起作用:

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
相关问题