2010-09-03 27 views
9

Tengo un archivo que contiene una clase de ayuda algo como esto:error de enrutamiento: constante no inicializado en Rails 3

app/clases/myfile.rb

Module mymodule 
    class myclass 
    # blah blah 
    end 
end 

quiero utilizar esta clase en un controlador , por lo que he escrito algo como esto:

require 'myfile' 

class MyController < ApplicationController 

    include mymodule 

    def index 
    mymodule::myclass.new 
    end 

end 

la ruta para el controlador se define así:

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

Ahora, por el comportamiento extraño que estoy enfrentando. Funciona perfectamente bien en la primera ejecución después de que se inicia el servidor. Pero cuando actualizo la página o pulso la URL nuevamente, aparece el siguiente error.

Routing Error 

uninitialized constant MyController::mymodule 

no puedo distinguir nada fuera del error, ni puedo entender por qué no funciona desde el segundo golpe en adelante solamente. ¿Qué esta pasando?

Respuesta

2

Cambié el 'miarchivo' para cargar 'myfile.rb' y ahora funciona bien. Sin embargo, no sé si resolví el problema. No sé lo que está pasando. ¿Alguien me puede iluminar?

8

En términos generales, los carriles le gusta ver los archivos que contiene:

module MyModule 

nombrado my_module.rb Módulos

generalmente se capitalizan

Además, se cree que MyModule está en el ámbito bajo la clase myController, que se no es. Puede probar

include ::MyModule 

para acceder desde el nivel superior.

Tampoco sé si las rutas de carga incluyen el directorio de clases, por lo que probablemente no esté cargando automáticamente el archivo miarchivo.rb en primer lugar.

Cuestiones relacionadas