我正在使用连接到我的 Airports 模型的 collection_select。
声明
belongs_to :departure_airport, :class_name => 'Airport', :foreign_key => 'd_airport_id'
belongs_to :arrival_airport, :class_name => 'Airport', :foreign_key => 'a_airport_id'
机场
has_many :claims
_form.html.erb
<%= collection_select :claim, :d_airport_id, Airport.order('name'), :id, :name, {:prompt => true} %>
当前下拉列表显示“曼彻斯特国际机场”(例如),但我想包含同一模型中的其他字段名称。
男人|曼彻斯特国际机场 | EGCC(期望结果)
MAN 和 EGCC 都是机场模型中的列,分别命名为 iata 和 icao。
我将继续只保存 airport_id,但出于显示目的,下拉列表中的附加信息会很棒。
最佳答案
您可以使用您想要显示的格式化字符串向 Airport
模型添加一个方法。像这样的东西:
def formatted_name
"#{iata} | #{name} | #{icao}"
end
然后将该方法传递给 collection_select
而不是 :name
。所以:
<%= collection_select :claim, :d_airport_id, Airport.order('name'), :id, :formatted_name, {:prompt => true} %>
请参阅文档 here 。有问题的参数称为 :text_method
。
关于ruby-on-rails - Collection_Select 在下拉列表中显示多个字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37572252/