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

问题描述 投票:18回答:2

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

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

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

还有另一种在关联选择字段中定义自定义属性的方法吗?

ruby-on-rails forms model simple-form
2个回答
24
投票

使用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。但是直到我自己解决问题后我才注意到:)


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
© www.soinside.com 2019 - 2024. All rights reserved.