我有一个select字段,我想在其中添加一个名为name的自定义属性,我试着这样做:
<%= f.association :in_charge, :collection => User.lawyer.map{ |l| [l.name, l.id, {:name => l.name.downcase}] } %>
它工作并生成额外属性但是存在问题,选择值属性变为模型名称属性,在本例中为l.name。我更改了地方并首先放置了l.id但是显示了id属性,它们是重复的,任何想法为什么会发生这种情况?
是否有其他方法可以在关联选择字段中定义自定义属性?
答案 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