1

こんにちは、カスタムの国リストを使用しているアプリがあります。一部のクラスでは機能しますが、他のクラスでは機能しません..

例えば..

このクラスの場合:

class Club < ActiveRecord::Base
  attr_accessible :name, :division, :from, :to, :country_id

  belongs_to :player
  belongs_to :country

  DIVISION = %w{
    first_division
    second_division
    third_division
    amateur_division
  }

  YEARS = (1950..(Time.now.strftime('%Y')).to_i).to_a

end

ビューで使用すると問題なく動作します

 <% @player.clubs.each do |club| %>
      <% if club.name.present? %>
        <p>
          <%= t 'activerecord.attributes.club.name' %> :
          <%= club.name %><br />
          <%= t 'activerecord.attributes.club.country' %> :
          <%= club.country.name %><br />
          <%= t 'activerecord.attributes.club.division' %> :
          <%= t "generales.#{club.division}" if club.division.present? %><br />
          <%= t 'activerecord.attributes.club.from' %>
          <%= club.from %>
          <%= t 'activerecord.attributes.club.to' %>
          <%= club.to %>
        </p>
      <% end %>
    <% end %>

しかし、この単純なクラスでは

class Citizen < ActiveRecord::Base
  attr_accessible  :country_id

  belongs_to :player
  belongs_to :country
end

私はこれを表示しています

 <% @player.citizens.each do |citizen| %>

          <%= t('generales.citizen') %> :
          <%= citizen.country.name %>

    <% end %>

これにより、nil:NilClass の未定義のメソッド `name' が発生します

私がに変更した場合

 <% @player.citizens.each do |citizen| %>

          <%= t('generales.citizen') %> :
          <%= citizen %>

    <% end %>

それから私は得た

#<Citizen:0x007f8511dd8978> 

これを試したら

<%= citizen.country_id %>

保存されている Country_id をエコーし​​ます。この ID を国名としてエコーするにはどうすればよいですか? ありがとう

誰が私が間違っているのか教えてもらえますか?

これがCountry.rbモデルです

class Country < ActiveRecord::Base
  attr_accessible :iso, :name, :printable_name, :iso3, :numcode
end
4

1 に答える 1