ruby-on-rails - 在 object 为 nil 的地方分配 id
问题描述
这是我的问题。我正在努力解决这个错误
ActionView::Template::Error (undefined method `id' for nil:NilClass):
37: <ul class="dropdown">
38: <li><%= link_to 'Add Info', new_developer_developer_info_path(current_user.id) %></li>
39: <li><%= link_to 'Edit Profile', edit_developer_registration_path %></li>
40: <li><%= link_to 'Edit Info', edit_developer_developer_info_path(current_user.id, current_user.developer_info.id) %></li>
41: </ul>
42: </li>
43: <li><%= link_to 'Dashboard', developer_path(current_user) %></li>
当开发人员(用户)注册时,它会将他重定向到有导航栏(设计)的个人资料页面。导航栏有一个带有编辑链接的下拉菜单。如果我的开发人员已经注册,那么我不会收到任何错误,因为我有一个 id current_user.developer_info.id
,但是如果他还没有注册,那么我会收到一个错误undefined method 'id' for nil:NilClass
。
到目前为止,我在这里找到的解决方案是@developer_info = DeveloperInfo.new
在适当的控制器中创建一个类的实例并将其传递@developer_info.id
给application.html.erb
. 但是我必须使用哪个控制器?我在正确的方向上解决我的问题吗?我无权访问devise
我的开发人员注册的控制器。提前感谢您的帮助。
解决方案
最简单的方法是检查当前用户的 developer_info 并隐藏/显示链接。如果用户未注册,则无需编辑任何内容,因此无需显示任何内容。
<ul class="dropdown">
<li><%= link_to 'Add Info', new_developer_developer_info_path(current_user.id) %></li>
<li><%= link_to 'Edit Profile', edit_developer_registration_path %></li>
<% if current_user.developer_info %>
<li><%= link_to 'Edit Info', edit_developer_developer_info_path(current_user.id, current_user.developer_info.id) %></li>
<% end %>
</ul>
推荐阅读
- postgresql - 查询失败时如何在nestjs中捕获错误
- azure-eventhub - 来自 Azure 事件中心的日志数据被提取到 ADX 表,没有显示记录,但记录计数即将到来
- angular - angular8 访问使用 ngTemplateOutlet 创建的 ng-template 内容
- android - android studio 3.6 中的 Gradle 同步失败
- c - 如何编写一个以 RGB 缓冲区为输入的 gstreamer 插件?
- composer-php - Seld\JsonLint\ParsingException "/root/.composer/auth.json" 安装后不包含有效的 JSON
- c++ - C++ 中带有 Clion 的简单程序“在 '&&' 标记之前需要 `,' 或 `...'”
- jasmine - 量角器 - 茉莉花类型错误:无法读取未定义的属性“结果”
- netlogo - 在海龟的完整有向加权图中删除多个链接
- python - 使用 Selenium/Python 在 Datepicker 中更改日期