我的表单包含以下标记:
<%= f.collection_select :employee_id, @employees, :id, :value, :prompt => true %>
员工看起来像这样:
employee
- attr1
- attr2
- user
- firstname
- lastname
我的问题:如何将lastname
的{{1}}设置为选择字段中的值?我很确定这是可能的,但我认为我在语法上有一些差距。
答案 0 :(得分:0)
你为什么这样做?
有可能,有:
<%= f.collection_select :employee_id, @employees, :last_name, :text_method, :prompt => true %>
其中:text_method
是调用@employees
成员的方法会返回您想要在下拉列表中显示的文字。
答案 1 :(得分:0)
你可能会问自己为什么我使用<%= f.select %>
这是Ruby on Rails Api上的FormOptionHelper这与collection_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"}) %>
这将选择所有员工并按姓氏顺序对其进行排序。