Rails - 如何在集合选择表单中显示两个属性?

时间:2013-05-24 04:00:13

标签: ruby-on-rails

我有一个collection_select表单,其中包含以下代码:

<%= f.collection_select(:city_id,  City.order('name ASC'),  :id, :name, {:prompt   => "Select a City"}, {:id => 'cities_select'}) %>

现在它只是在我的数据库中按名称列出所有城市,但是有重复的城市名称。例如,有两个“皮奥里亚”城市。

所以,我想用逗号分别显示州属性:“Peoria,IL”以帮助区分城市。如何在表单代码中编写此代码?

3 个答案:

答案 0 :(得分:6)

您也可以使用collection_select

f.collection_select :city_id, City.order('name ASC'), :id, :name_with_state, { prompt: 'Select a City' }, { id: 'cities_select' }

name_with_state应该在你的城市模型中

def name_with_state
  "#{name}, #{state}"
end

答案 1 :(得分:0)

您可以使用选择:

<%= f.select(:city_id,  City.order('name ASC').map{ |city| [city.your_method, city.id]},
      {:prompt   => "Select a City"}, {:id => 'cities_select'}) %>

答案 2 :(得分:0)

f.select :city_id, City.all.map{|c| ["#{c.name}, #{c.state}", c.id] }, { :prompt => "Select City" }