2

我有一个包含所有集合的选择字段Address。我想展示类似"address.name / country.name"价值的东西。

= item.collection_select :address_id, Address.all, :id, :name

目前在这个示例中,我只显示address.name属性。如何在此处嵌套其他值以及如何从嵌套关联中调用值?( address.country.name)。?

我通过做这样的事情让它工作了。只是想知道是否有更好的东西。

%select{name: "user[address_id]"}
  - Address.all.each do |address|
    %option{value: address.id}
      = address.name
      = address.country.name
4

2 回答 2

3

您可以在 Address 模型上编写自己的方法,该方法将为集合选择返回一个好听的名称:

class Address < ActiveRecord::Base

  def name_with_country
    str = self.name
    str += " #{self.country.name}" if self.country.present?
    str
  end

并在 collection_select 中使用它:

= item.collection_select :address_id, Address.all, :id, :name_with_country
于 2013-08-22T14:24:28.743 回答
1

试试这个:

= item.collection_select :country_id, Address.all, :id, :full_address

比为您的模型添加一个方法:

def full_address
   full_address = name
   full_address += " / #{country.name}" if country.present?
   full_address
 end
于 2013-08-22T13:55:54.380 回答