Rails 4,SQ Lite 3:NoMethodError - 未定义方法:nil:NilClass

时间:2016-10-17 10:09:57

标签: ruby-on-rails ruby ruby-on-rails-3 sqlite

我创建了一个通知模型belongs_to用户(设计)和每个用户has_many通知。
但是我无法在应用程序控制器或任何其他控制器中获取通知:

def notifications
    @notifications = Notification.where(user_id: current_user.id).order('created_at desc')
end

我似乎总是将nil作为对象。

例如:
食谱/搜索视图(views / items / search.html.haml):

- if @notifications.exists?

给了我这个错误:

NoMethodError
undefined method `exists?' for nil:NilClass

在我的控制台中,我可以使用以下内容获取通知:

Notification.where(user_id: 3)

提前感谢您的帮助!

2 个答案:

答案 0 :(得分:1)

- if @notifcations.exists?尝试- if @notifications.exists?

中存在拼写错误

我建议您将代码更改为

在user.rb

def ordered_notifications
   notifications.order(created_at: :desc)
end

在你看来

- if @current_user.ordered_notifications.exists?

答案 1 :(得分:0)

尝试:

- if @notifications.any?

然后你不会得到 NoMethodError ,如果它是空的,它将被视为假