2010-09-03 19 views
9

Ich habe eine Datei, die eine Hilfsklasse so etwas wie dieses enthält:Routing-Fehler: Nicht initialisierte Konstante in Rails 3

app/classes/myfile.rb

Module mymodule 
    class myclass 
    # blah blah 
    end 
end 

Ich möchte diese Klasse in einem Controller verwenden, , so schrieb ich etwas wie folgt aus:

require 'myfile' 

class MyController < ApplicationController 

    include mymodule 

    def index 
    mymodule::myclass.new 
    end 

end 

die Route für den Controller wie folgt definiert ist:

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

Jetzt für das seltsame Verhalten, das ich gegenüberstelle. Es funktioniert einwandfrei beim ersten Start nach dem Serverstart. Aber wenn ich die Seite aktualisiere oder die URL erneut drücke, erhalte ich den folgenden Fehler.

Routing Error 

uninitialized constant MyController::mymodule 

kann ich nichts aus dem Fehler ausmachen, noch kann ich verstehen, warum es nicht von dem zweiten Treffer weiter nur nicht funktioniert. Was ist los?

Antwort

2

Ich ändere verlangen 'myfile' zu laden 'myfile.rb' und es funktioniert jetzt gut. Ich weiß nicht, ob ich das Problem gelöst habe. Ich weiß nicht, was passiert. Kann mich jemand aufklären?

8

Generell mag Rails-Dateien enthält, um zu sehen:

module MyModule 

my_module.rb

Module genannt

sind

auch allgemein

aktiviert, denkt es, dass MyModule unter der MyController Klasse scoped, die es ist nicht. Sie könnten versuchen,

include ::MyModule 

Zugriff auf es aus der Top-Level-Bereich.

Ich weiß auch nicht, ob Ihre Ladepfade enthalten Ihre Klassen-Verzeichnis, so ist es wahrscheinlich nicht automatisch die Datei myfile.rb an erster Stelle.

Verwandte Themen