2014-01-22 172 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

經過編輯的答案更加明確地展示了約定和適當的聲明。 –