自定义collection_select下拉列表中的文本

时间:2016-05-19 21:18:00

标签: ruby-on-rails collection-select

我有一个collection_select下拉列表,其下拉名称如下:

<%= f.collection_select(:person_id, Person.all, :id, :name) %>

但我有一个指向他们所属团体的人的外键。在下拉列表中,我想要显示人员姓名和他们旁边的小组,如下所示:

保罗(高尔夫球手) 凯文(水手)

等等......

这可以使用collection_select吗?

2 个答案:

答案 0 :(得分:6)

实际上这很简单。您只需要在模型中编写一个方法,然后从下拉列表中将您想要的字符串格式化。所以,从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)

事后看来相当明显。

答案 1 :(得分:0)

你试过了吗?

<%= f.collection_select(:person_id, Person.all.collect { |p| ["#{p.name}(#{p.group})", p.id ] } ) %>