如何获取options_from_collection_for_select的多个字段

时间:2013-07-22 16:22:53

标签: ruby-on-rails

我在select_tag中有以下内容。它工作正常。 (我正在使用select_tag,因为它是针对与模型无关的搜索。)

options_from_collection_for_select(@customers, :id, :first_name)

当前的HTML输出是:

<option value="4">Fred</option>

但我想:

<option value="4">Fred Flintstone</option>

我想显示全名,而不仅仅是名字。我似乎无法使用“first_name”和“last_name”这两个字段,也无法弄清楚如何调用我连接两个字段的方法。我怎样才能让它发挥作用?

3 个答案:

答案 0 :(得分:18)

在模型中添加方法full_name:

def full_name
   "#{first_name} #{last_name}"
end

并使用此:

options_from_collection_for_select(@customers, :id, :full_name)

希望这会有所帮助。

答案 1 :(得分:13)

您可以在模型上定义:

def name; "#{first_name} #{last_name}";end

并使用:

options_from_collection_for_select(@customers, :id, :name)

答案 2 :(得分:0)

这也可以通过这种方式完成,您无需在模型中编写方法。

options_from_collections_for_select(
  @customers, :id, ->(ob) { "#{ob.first_name} #{ob.last_name}" }
)