我正在使用以下代码和函数 options_from_collection_for_select 为用户生成选项。
<%= select_tag 'receiver', options_from_collection_for_select(@user, 'id', 'email') %>
上面的代码生成下面的html:
<select id="receiver" name="receiver" style="display: none;">
<option value="1">email1@yahoo.com</option>
<option value="2">email2@gmail.com</option>
<option value="3">email3@gmail.com</option>
</select>
但我希望使用用户名发送电子邮件,例如<optionvalue="1">email1@yahoo.com(some_user)</option>
建议任何备用功能或自定义当前功能。
答案 0 :(得分:2)
在User
模型中添加方法:
def user_dispay_name
"#{email}(#{full_name})"
end
现在做:
<%= select_tag 'receiver', options_from_collection_for_select(@user, 'id', 'user_dispay_name') %>
答案 1 :(得分:0)
但如果没有options_from_collection_for_select
这个功能,请使用以下代码:
<%= select_tag 'receiver', options_for_select(@user.map{ |c| ["#{c.email} (#{c.display_name})", "#{c.id}"] }) %>