options_from_collection_for_select如何使用两个变量作为显示值

时间:2013-05-01 04:02:24

标签: ruby-on-rails html-select

我有一个像这样的选择标签:

= select_tag :cc, options_from_collection_for_select(@possible_contacts, "id", "email")

这会列出每个@possible_contacts个电子邮件地址。每个联系人也有一个名字。我想要做的是将每个@possible_contacts显示为名称和电子邮件地址,如下所示:

Joe Smith <joe@gmail.com>

这需要电子邮件和姓名......但我不确定如何将它们都放在选择

1 个答案:

答案 0 :(得分:1)

您可以使用options_for_select代替,例如:

select_tag :cc, options_for_select(@possible_contacts.map{|contact| ["#{contact.name} <#{contact.email}>", contact.id])

例如,这基本上与:

相同
select_tag :cc, options_for_select([['Joe Smith <joe@example.com>', 123], ['David H Hansson <dhh@example.com>', 987]])

变成:

<select id="cc" name="cc">
  <option value="123">Joe Smith &lt;joe@example.com&gt;</option>
  <option value="987">David H Hansson &lt;dhh@example.com&gt;</option>
</select>