2014-01-22 72 views
0

所以我建立了一个新的controller =“Categories_controller.rb”和一个新的Model =“Category.rb”,现在我通常会把我的Savedfriend.rb模型与Category.rb模型一起使用;在rails中未初始化的常量?

<%= category.savedfriends.size %> 

但是这次我不断收到;

uninitialized constant Category::Savedfriend 

这让我疯狂。我确实有与belongs_to设置的所有模型。

+0

您的“SavedFriend”类完全位于'models'文件夹中,还是在其子文件夹中? – tolgap

回答

2

按照Rails的约定,如果你没有在关联中指定你的class_name,它将寻找类名的关联名称的单数化驼峰版本。例如,如果您有型号SavedFriend,那么您的关联应该被命名为saved_friends。如果它找不到关联的类,那么Rails倾向于在类中尝试调用它的范围类。这个错误有点模糊,但是当我在协会中出现拼写错误时,我已经看到了很多次。

# in app/models/saved_friends.rb 
class SavedFriend < ActiveRecord::Base 
    belongs_to :category 
end 

# in app/models/category.rb 
class Category < ActiveRecord::Base 
    has_many :saved_friends 
end 

而且,如果对文件和类的命名方案是零星的,因为它是你的问题,你将有一个坏的时间。文件名应该是小写字母和下划线,类名应该是文件名的骆驼耳版。即Categories_controller.rb应该是categories_controller.rb,并且该类应该是CategoriesController。同样,saved_friend.rb应该包含class SavedFriend

+0

我在文件命名问题上的错误,我的所有文件都是小写:)对不起 – user2419316

+0

@ user2419316这不是小写,每个骆驼套都应该有下划线。 – tolgap

+0

经过编辑的答案更加明确地展示了约定和适当的声明。 –