12

我在 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”这两个字段,也无法弄清楚如何让它调用连接这两个字段的方法。我怎样才能让它工作?

4

3 回答 3

19

在您的模型中添加方法 full_name :

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

并使用这个:

options_from_collection_for_select(@customers, :id, :full_name)

希望这会有所帮助。

于 2013-07-22T16:55:42.590 回答
14

您可以在模型上定义:

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

并使用:

options_from_collection_for_select(@customers, :id, :name)

于 2013-07-22T16:46:01.973 回答
1

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

options_from_collections_for_select(
  @customers, :id, ->(ob) { "#{ob.first_name} #{ob.last_name}" }
)
于 2019-02-14T14:42:39.960 回答