2010-09-03 41 views
9

我有一個包含一個輔助類的東西像這樣的文件:路由錯誤:在未初始化的Rails 3不變

應用程序/班/ myfile.rb

Module mymodule 
    class myclass 
    # blah blah 
    end 
end 

我想在一個控制器來使用這個類,所以我寫了這樣的事情:

require 'myfile' 

class MyController < ApplicationController 

    include mymodule 

    def index 
    mymodule::myclass.new 
    end 

end 

爲控制器的路由定義是這樣的:

match 'mycontroller', :to => 'mycontroller#index' 

現在我正面臨着奇怪的行爲。它在服務器啓動後的第一次運行中工作得很好。但是,當我刷新頁面或再次點擊URL時,出現以下錯誤。

Routing Error 

uninitialized constant MyController::mymodule 

我不能弄出任何錯誤,也不能理解爲什麼它不能從第二次打到只有。發生了什麼?

回答

2

我改變了require'myfile'來加載'myfile.rb',它現在可以正常工作。我不知道我是否解決了這個問題。我不知道發生了什麼。有人能夠啓發我嗎?

8

一般來說,Rails的喜歡看到包含文件:

module MyModule 

命名my_module.rb

模塊一般資本

此外,它認爲MyModule的是myController的類,在作用域它不是。您可以嘗試

include ::MyModule 

可以從頂級範圍訪問它。

我也不知道你的加載路徑是否包含你的類目錄,所以它可能不是首先自動加載myfile.rb文件。

相關問題