ruby-on-rails - 防止 nil:NilClass 的未定义方法“名称”用于呈现 nil 用户对象
问题描述
在我的登录页面上,我试图列出 Game 模型的所有实例以及与之关联的相应 Assignment 模型。创建游戏时,也会创建一个作业。唯一传递给该作业的是 game_id。其他 3 个参数为零。如何在没有undefined method 'name' for nil:NilClass
. 我认为这可以通过optional: true
set 解决,但我想不会。
我确实在 _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
解决方案
推荐阅读
- clojure - 创建 deps.edn 文件时出现问题
- visual-studio-code - vscode-lldb 不计算 rust 表达式
- database - 在店外存储和查询异类事实|规则?
- css - 汉堡菜单中的滚动溢出
- python-3.x - Python,TypeError:没有编码的字符串参数
- javascript - 将事件侦听器添加到按钮时如何调试
- cmake - cmake add_custom_command 引入错误的依赖,除非 add_custom_target 也使用
- npm - Laravel - Bootstrap - NPM Watch 没有替换 css 匹配,它正在添加
- javascript - 当 Mac 设置(不是浏览器设置)拒绝位置共享时,HTML5 Geolocation API 悄然失败
- html - Html Css在两行和两列中删除两个div之间的距离