Как я могу сделать ссылку на фактический идентификатор профиля? - PullRequest
0 голосов
/ 24 января 2019

Я пытаюсь предоставить ссылку для просмотра пользователями своих профилей. Я хочу, чтобы это было по ID. У меня есть эта строка:

<a href=""><%= link_to post.author.username, profile_path(post.author) %></a>

Я не могу напрямую связать с идентификатором поста. Вместо этого я должен использовать user_id. Я получаю эту ошибку:

undefined method 'id' for nil:NilClass

Как я могу это исправить?

Ответы [ 2 ]

0 голосов
/ 24 января 2019

Похоже, у вас возникла проблема при сохранении post, и вы также не указали автора, поэтому post.author равно nil.

Как сказал @spickermann, вы должны поставить охрану, чтобы проверить, существует ли post.author, а если нет, вы можете отобразить какое-то общее сообщение.

Примерно так:

<% if post.author %>
   <%= link_to(post.author.username, profile_path(post.author)) %>
<% else %>
   "Unknown author"
<% end %>
0 голосов
/ 24 января 2019

Очевидно, post.author возвращает nil. Вы должны сначала проверить, существует ли автор, прежде чем пытаться сгенерировать ссылку - например, так:

<%= link_to(post.author.username, profile_path(post.author)) if post.author %>

Или напишите вспомогательный метод:

# in a helper
def profile_link(user)
  link_to(user.username, profile_path(user)) if user
end

# in the view
<%= profile_link(post.author) %>

Кстати: link_to возвращает HTML-тег a, дополнительный <a href="">...</a>.

не требуется.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...