代码之家  ›  专栏  ›  技术社区  ›  wayoh22

防止未定义的nil方法“name”:用于呈现nil用户对象的NilClass

  •  0
  • wayoh22  · 技术社区  · 4 年前

    在我的登录页上,我试图列出一个游戏模型的所有实例以及与之相关的分配模型。创建游戏时,也会创建任务。传递到该任务中的唯一内容是游戏id。其他3个参数保留为零。我如何在不获得许可的情况下显示游戏 undefined method 'name' for nil:NilClass optional: true 设置,但我想不是。

    我知道在_feed.html.erb文件中,它返回了那个错误,因为它需要一个用户对象,所以我只需要在其中嵌入一些逻辑来防止那个错误?最后,如果 center_referee assistant_referee_1 ,及/或 assistant_referee_2 尚未设置,我需要它显示为空白

    _feed.html.erb
    
    <div>
        <% @games.each do | game | %>
                <p ><%= game.home_team %> vs <%= game.away_team %></p>
                <p >Center Referee: <%= game.assignment.center_referee.name %></p>
                <p >AR1: <%= game.assignment.assistant_referee_1.name %></p>
                <p >AR2: <%= game.assignment.assistant_referee_2.name %></p>
                <br></br>
        <% end %>
    </div>
    
    models/game.rb
    
    class Game < ApplicationRecord
        has_one :assignment, dependent: :destroy
        has_many :users, through: :assignment
    
        after_save :create_assignment
    
        def create_assignment
            Assignment.create(game_id: id)
        end
    end
    
    models/assignment.rb
    
    class Assignment < ApplicationRecord
        belongs_to :game
    
        belongs_to :center_referee, class_name: 'User', optional: true
        belongs_to :assistant_referee_1, class_name: 'User', optional: true
        belongs_to :assistant_referee_2, class_name: 'User', optional: true
    
        accepts_nested_attributes_for :game    
    end
    
    1 回复  |  直到 4 年前
        1
  •  1
  •   João Fernandes    4 年前

    &

    game.assignment.center_referee&.name
    
    推荐文章