Ruby on rails 如何将子属性设置为集合\选择值?

Ruby on rails 如何将子属性设置为集合\选择值?,ruby-on-rails,select,collections,simple-form,Ruby On Rails,Select,Collections,Simple Form,我的表单包含以下标记: <%= f.collection_select :employee_id, @employees, :id, :value, :prompt => true %> 我的问题:如何将员工的lastname设置为select字段中的值?我很确定这是可能的,但我想我在语法上有一些漏洞。你为什么要这样做 这是可能的,因为: <%= f.collection_select :employee_id, @employees, :last_name, :te

我的表单包含以下标记:

<%= f.collection_select :employee_id, @employees, :id, :value, :prompt => true  %>
我的问题:如何将员工的
lastname
设置为select字段中的值?我很确定这是可能的,但我想我在语法上有一些漏洞。

你为什么要这样做

这是可能的,因为:

<%= f.collection_select :employee_id, @employees, :last_name, :text_method, :prompt => true %>
true%>

其中
:text\u method
是调用
@employees
的方法,成员将返回您希望显示在下拉列表中的文本

您可能会问自己,为什么我在Ruby on Rails Api上使用了
这是FormOptionHelper这非常类似于
collection\u select
,但是它会返回和标记值集合。而
select
为提供的对象和方法创建一系列包含的选项标记。因此,我相信你可以做到以下几点:

<%= f.select(:employee_id, Employee.all.collect { |emp| [emp.lastname, user.id] }
             .sort{ |a, b| a[0] <=> b[0] }, {:prompt => "Select a Employee"}) %>
“选择员工”})%>
这将选择所有员工并按姓氏顺序对他们进行排序

<%= f.select(:employee_id, Employee.all.collect { |emp| [emp.lastname, user.id] }
             .sort{ |a, b| a[0] <=> b[0] }, {:prompt => "Select a Employee"}) %>