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 的未定义方法“名称”

如果我改为

 <% @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

1

要根据您的citizen模型公民所属的国家/地区名称获取国家/地区名称,country并且国家/地区模型国家应该有一个name您想要的显示国家名称,请使用<%=citizen.country.name%>下面的内容

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

      <%= t('generales.citizen') %> :
      <%= t(citizen.country.name) unless citizen.nil? && citizen.country.nil? %>

   <% end %>
于 2013-09-23T04:25:50.007 回答