在为用户Posts.find(creator: current_user:_id)
调用所有帖子时,用户没有做任何... rails为其发出“NoMethodError”...
我想要做的是为“为什么,不。你没有发布任何东西,你懒惰的用户”的用户有一个漂亮的输出。而不是这个可怕的错误。
处理这样的事情最好的方法是什么?
答案 0 :(得分:1)
您需要使用where
代替find
。根据设计,find
方法实际上找到您正在寻找的现有内容。请参阅有关查询here的文档。
此外,您可以尝试使用try
方法。基本上它等于以下内容:
object.try(:something_scary)
# is equal to
object && object.something_scary
这是我处理nil
实体的方式。如果您想向用户显示某种消息(关于懒散),请在模板内部进行检查并渲染不同的部分。例如:
<% if @posts.present? %>
<%= render 'posts' %>
<% else %>
<%= render 'no_posts' %>
<% end %>
然后,您可以将消息放入no_posts
部分内容。