自定义 collection_select 下拉列表中的文本
Customizing the text in a collection_select dropdown
我有一个 collection_select 下拉列表,其中包含如下名称的下拉列表:
<%= f.collection_select(:person_id, Person.all, :id, :name) %>
但是我有一个指向他们所属的组的人的外键。在下拉列表中,我想像这样显示人名和他们旁边的组:
保罗(高尔夫球手)
凯文(水手队)
等...
这可以使用 collection_select 吗?
你试过了吗:
<%= f.collection_select(:person_id, Person.all.collect { |p| ["#{p.name}(#{p.group})", p.id ] } ) %>
这其实很简单。您只需要在您从中提取的模型上编写一个方法,该方法可以格式化您在下拉列表中想要的字符串。所以,从 documentation:
class Post < ActiveRecord::Base
belongs_to :author
end
class Author < ActiveRecord::Base
has_many :posts
def name_with_initial
"#{first_name.first}. #{last_name}"
end
end
然后,在您的 collection_select
中调用该方法,而不是调用名称或您之前出现的任何内容。
collection_select(:post, :author_id, Author.all, :id, :name_with_initial)
事后看来很明显。
我有一个 collection_select 下拉列表,其中包含如下名称的下拉列表:
<%= f.collection_select(:person_id, Person.all, :id, :name) %>
但是我有一个指向他们所属的组的人的外键。在下拉列表中,我想像这样显示人名和他们旁边的组:
保罗(高尔夫球手) 凯文(水手队)
等...
这可以使用 collection_select 吗?
你试过了吗:
<%= f.collection_select(:person_id, Person.all.collect { |p| ["#{p.name}(#{p.group})", p.id ] } ) %>
这其实很简单。您只需要在您从中提取的模型上编写一个方法,该方法可以格式化您在下拉列表中想要的字符串。所以,从 documentation:
class Post < ActiveRecord::Base
belongs_to :author
end
class Author < ActiveRecord::Base
has_many :posts
def name_with_initial
"#{first_name.first}. #{last_name}"
end
end
然后,在您的 collection_select
中调用该方法,而不是调用名称或您之前出现的任何内容。
collection_select(:post, :author_id, Author.all, :id, :name_with_initial)
事后看来很明显。