如何链接到个人资料的实际ID?

时间:2019-01-24 04:16:06

标签: ruby-on-rails ruby

我正试图为我的用户提供一个链接,以查看其他人的个人资料。我希望它是ID。我有这行:

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

我无法直接链接到该帖子的ID。相反,我必须使用user_id。我收到此错误:

undefined method 'id' for nil:NilClass

我该如何解决?

2 个答案:

答案 0 :(得分:0)

很明显,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返回一个a HTML标记,不需要额外的<a href="">...</a>

答案 1 :(得分:0)

在保存post时似乎遇到了问题,您也没有设置作者,因此post.authornil

就像@spickermann所说的那样,您应该加倍警惕以检查post.author是否存在,如果不存在,则可以显示一些通用消息。

类似这样的东西:

<% if post.author %>
   <%= link_to(post.author.username, profile_path(post.author)) %>
<% else %>
   "Unknown author"
<% end %>