nil的未定义方法`name':NilClass Rails

时间:2011-09-09 09:33:16

标签: ruby-on-rails-3

在我的用户模型中,我有以下方法:

  def has_birthday_boards?
    year = Date.new(Time.now.year).to_time
    self.participants.where(:role => "Celebrant", :created_at => year..Time.now)   
  end

在我的控制器中,我有以下内容:

 def celebrant_exists
   @user =  get_current_board.celebrant
   @participant_boards = @user.has_birthday_boards?

在我看来,我有以下内容:

<% @participant_boards.each do |pb|%>
      <%= pb.board.manager.name %>
   <% end %>

这会产生以下错误:

undefined method `name' for nil:NilClass

所以我看看是否有一个物体而且我做了

<% @participant_boards.each do |pb|%>
      <%= pb.board.manager%>
   <% end %>

产地:

#<User:0x0000010645b800> #<User:0x00000106422708> 

如果我执行以下操作:

@participant_boards.first.board.manager.name

=> Benedict Dickens 

那么为什么我不能遍历数组并获得这些值呢?

1 个答案:

答案 0 :(得分:1)

可能有些董事会没有经理。检查一下:

<% @participant_boards.each_with_index do |pb, i|%>
  <%= i %>
  <%= pb.board.manager%>
<% end %>

可能你会看到一些没有pb.board.manager的数字