访问关联类(STI)Rails3



我有一个这样的型号

class Group < ActiveRecord::Base
  has_many :people
  has_one :leader
  attr_accessible :name
end
class Person < ActiveRecord::Base
  belongs_to :group
end
class Leader < Person
  belongs_to :group
  attr_accessible :first_name, :last_name
end

然后我试图通过这个视图绘制一个组的页面

<p>
  <b>Name:</b>
  <%= @group.name %>
</p>
<p>
  <b>Leader:</b>
  <%= @leader.last_name %>
</p>

并在Groups#show中获取NoMethodErrornil:NilClass的未定义方法"last_name"

这是组_控制器

def show
  @group = Group.find(params[:id])
  @leader = @group.leader

怎么了?

UPD也不起作用

<b>Leader:</b>
<%= @group.leader.last_name %>

我真的被卡住了/请帮帮我!

您的案例中的@group没有leader。该变量为nil,因此当您尝试获取nil前导名称时会出错。

您可以将页面的这一部分放在if块中,以确保不会出现错误:

<% if @group.leader.nil? %>
  This group has no leader
<% else %>
  <%= @group.leader.last_name %>
<% end %>

相关内容

  • 没有找到相关文章

最新更新