Назначьте идентификатор, где объект равен нулю - PullRequest
0 голосов
/ 29 августа 2018

Вот моя проблема. Я борюсь с этой ошибкой

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>

Когда разработчик (пользователь) регистрируется, он перенаправляет его на страницу профиля, где есть панель навигации (разработка). В навигационной панели есть выпадающее меню со ссылкой для редактирования. Если мой разработчик уже зарегистрирован, я не получаю ошибок, потому что у меня есть идентификатор для current_user.developer_info.id, но если он не зарегистрирован, то я получаю ошибку undefined method 'id' for nil:NilClass.

Решение, которое я нашел здесь до сих пор, состоит в том, чтобы создать экземпляр класса @developer_info = DeveloperInfo.new в соответствующем контроллере и передать его @developer_info.id в application.html.erb. Но какой контроллер мне нужно использовать? Я в правильном направлении, чтобы решить мою проблему? У меня нет доступа к devise контроллеру, на который подписывается мой разработчик. Заранее спасибо за помощь.

1 Ответ

0 голосов
/ 29 августа 2018

Проще всего было бы поставить проверку для текущего пользователя 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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...