0

我有一个这样的模型

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 undefined method `last_name' for nil:NilClass 中获取 NoMethodError

这里是 groups_controller

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

怎么了?

UPD 这也不起作用

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

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

4

1 回答 1

0

@group你的情况下没有leader. 该变量为 nil,因此当您尝试获取 nil 领导者时,将其命名为错误。

您可以将页面的该部分包含在 if 块中,以确保不会出现错误:

<% if @group.leader.nil? %>
  This group has no leader
<% else %>
  <%= @group.leader.last_name %>
<% end %>
于 2013-08-11T00:05:57.177 回答