我正试图为我的用户提供一个链接,以查看其他人的个人资料。我希望它是ID。我有这行:
<a href=""><%= link_to post.author.username, profile_path(post.author) %></a>
我无法直接链接到该帖子的ID。相反,我必须使用user_id。我收到此错误:
undefined method 'id' for nil:NilClass
我该如何解决?
答案 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.author
是nil
。
就像@spickermann所说的那样,您应该加倍警惕以检查post.author
是否存在,如果不存在,则可以显示一些通用消息。
类似这样的东西:
<% if post.author %>
<%= link_to(post.author.username, profile_path(post.author)) %>
<% else %>
"Unknown author"
<% end %>