2013-08-20 63 views
1

我面臨以下錯誤:Rails的活動記錄名稱錯誤

NameError at 
uninitialized constant XController::Sheep 

在該行

server = Sheep.find_by_id(id) 

這是我的設置:

models/sheep.rb

class Sheep < ActiveRecord::Base 
    has_many :kids 
end 

在下

class Kid < ActiveRecord::Base 
    belongs_to :sheep # I tried adding , :class_name => 'Sheep' didn't do anything 
end 

config/initializers/inflections.rb

ActiveSupport::Inflector.inflections(:en) do |inflect| 
    inflect.uncountable 'sheep' 
end 

表的名稱實際上是sheep我查

我還需要檢查?

編輯: 在控制器controllers/farm.rb我兩次調用:

@kid = Kid.find_by_id params[:id] 
@sheep = Sheep.find_by_id(id) # works only when adding :: as in the answer 
+0

你在調用什麼文件'Sheep.find_by_id(id)'?你可以嘗試使用':: Sheep.find_by_id(id)'來代替嗎? – MrYoshiji

+0

它工作!但我怎麼可以引用其他模型,只需要Kid.find_by_name params [:name]而不需要::? (同樣的控制器) – nevermind

+0

我不知道,你沒有回答第一個問題,所以我不能幫你... – MrYoshiji

回答

1

您可以嘗試訪問該車型的名字以雙冒號:

server = Sheep.find_by_id(id) 
# become 
server = ::Sheep.find_by_id(id) 
     ^^ 

那麼它應該工作。

我還沒有足夠的信息來說明爲什麼它沒有冒號不能正常工作,但我的直覺告訴我XController::Sheep表明你在控制器的名字中有一個問題。

+0

控制器名稱是farm,沒什麼特別的 – nevermind