tutorial rails que ejemplos curso ruby-on-rails ruby ruby-on-rails-4

ruby-on-rails - que - ruby on rails tutorial



Dependencia circular detectada durante la carga automática constante al cargar constante (1)

Antes que nada: busqué en Google y usé la búsqueda aquí y encontré las respuestas al mismo error pero en diferentes configuraciones. Tal vez rompí algo diferente;)

Error:

RuntimeError at /admin/users Circular dependency detected while autoloading constant Admin::UsersController

La estructura es:

App => controllers => admin => users_controller.rb

Rutas:

namespace :admin do resources :stuff resources :users end

Controlador de usuarios:

class UsersController < Admin::BaseController def new #code end def create #code end def index #code end private def user_params #code end end

Controlador base de administración

class Admin::BaseController < ApplicationController layout ''admin'' before_filter :require_login end

Usando: Rails 4.1.4, Ruby 2.1.2 ¿Qué hice mal aquí?

¡Gracias por tu ayuda!

Editar:

desarrollo.rb

Rails.application.configure do config.cache_classes = false config.eager_load = false config.consider_all_requests_local = true config.action_controller.perform_caching = false config.action_mailer.raise_delivery_errors = false config.active_support.deprecation = :log config.active_record.migration_error = :page_load config.assets.debug = true config.assets.raise_runtime_errors = true end


Parece que el problema principal puede ser simplemente que no haya asignado espacio de nombre a su UsersController en el espacio de nombres Admin , aquí:

class UsersController < Admin::BaseController

Solución simple:

class Admin::UsersController < Admin::BaseController

Sin embargo, le sugiero que también divida sus espacios de nombres en distintas partes para evitar futuros dolores de cabeza. Entonces, en lugar de lo anterior, haz esto:

# app/controllers/admin/users_controller.rb module Admin class UsersController < Admin::BaseController # ... end end

Y haga lo mismo con todos los demás controladores de espacio de nombres, como:

# app/controllers/admin/base_controller.rb module Admin class BaseController < ApplicationController # ... end end

De esta forma, a medida que Rails carga y carga automáticamente, y así sucesivamente, siempre será seguro definir el módulo Admin antes de intentar cargar las clases debajo de él. A veces obtienes errores constantes desconocidos. El razonamiento es un poco complejo, pero si quieres echarle un vistazo echa un vistazo a esta publicación .

ACTUALIZAR

En Rails Edge, ahora hay una guía oficial sobre el tema de la carga automática de constantes .