我有一个选择字段,我想在其上放置一个名为name的自定义属性,我试图这样做:
<%= f.association :in_charge, :collection => User.lawyer.map{ |l| [l.name, l.id, {:name => l.name.downcase}] } %>
它可以工作并生成额外的属性,但是有一个问题,选择值属性被更改为模型名称属性,在本例中为l.name。我更改了位置,将l.id放在第一位,但是显示了id属性,它们被复制了,不知道为什么会发生这种情况?
还有另一种在关联选择字段中定义自定义属性的方法吗?
使用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。但是直到我自己解决问题后我才注意到:)
出于记录,现在看来它正在工作:
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