ruby-on-rails - Collection_Select 在下拉列表中显示多个字段

标签 ruby-on-rails ruby grouped-collection-select

我正在使用连接到我的 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/

相关文章:

ruby-on-rails - 模型查询时出现 ArgumentError

ruby-on-rails - 如何删除重音等拉丁字符?

ruby-on-rails - 如何使用 :selected with grouped_collection_select

ruby-on-rails - 使用 RSpec let( :foo) across examples

MySQL/Rails - Mysql2::Error(用户 'rails_user' @'localhost' 对数据库 'simple_cms_development' 的访问被拒绝):

ruby-on-rails - 如何将变量 link_to 定义为外部 URL

ruby-on-rails - 如何使用 Devise Omniauth + (Facebook , Twitter, Google ) 完成多重认证?

ruby-on-rails - Ruby on rails 用户注册使用 rest API 调用和 Devise