打印值为国家名称不工作Rails

时间:2013-09-23 03:25:59

标签: ruby-on-rails ruby-on-rails-3 ruby-on-rails-4

您好我有一个应用程序,即时通讯使用自定义国家/地区列表,它适用于某些类,但其他人没有..

例如......

对于这堂课:

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的未定义方法`name':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

1 个答案:

答案 0 :(得分:1)

要根据您的citizen模型获取国家/地区名称,公民属于country,国家/地区模型国家/地区应具有name,因此您只需使用{{1}即可显示国家/地区名称看下面

<%=citizen.country.name%>