2011-05-06 57 views
1

我有这个方法在我的视频控制器:为什么我无法从我的控制器中访问我的模型中定义的此方法?

def notifications 
    erase_notification_count 
end 

它要求在我的用户模型中定义的erase_notification_count方法:

def erase_notification_count 
    new_notification_count += (self.notifications.count * (-1)) 
end 

这是我的错误:

NameError in VideosController#notifications 

undefined local variable or method `erase_notification_count' for #<VideosController:0x102f0fed0> 

为什么我得到这个错误?我如何解决它?

回答

5

您在User模型上定义了erase_notification_count,这意味着您必须在User对象上调用它。您试图直接在VideosController对象上调用它。

+0

即使将该方法移动到视频模型,我也会得到相同的错误... – user730569 2011-05-07 00:16:35

+0

是的。你会。如果它在模型中,则必须直接在该模型的实例上调用它。控制器是一个独立的类,与不同类的实例没有魔法联系。听起来你需要更深入地理解面向对象和MVC原则。也许回到基础知识? – 2011-05-07 00:26:59

相关问题