Tout d'abord: j'ai googlé et utilisé la recherche ici et trouvé des réponses à la même erreur mais sur des configurations différentes. Peut-être que j'ai cassé quelque chose de différent;)
Erreur:
RuntimeError at /admin/users
Circular dependency detected while autoloading constant Admin::UsersController
La structure est:
App => controllers => admin => users_controller.rb
Itinéraires:
namespace :admin do
resources :stuff
resources :users
end
Contrôleur d'utilisateurs:
class UsersController < Admin::BaseController
def new
#code
end
def create
#code
end
def index
#code
end
private
def user_params
#code
end
end
Contrôleur de base administrateur
class Admin::BaseController < ApplicationController
layout 'admin'
before_filter :require_login
end
Utilisation de: Rails 4.1.4, Ruby 2.1.2 Qu'est-ce que j'ai fait de mal ici?)
Merci de votre aide!
Modifier:
development.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
Il semble que le principal problème soit que vous n'ayez pas nommé votre UsersController sous l'espace de noms Admin
, ici:
class UsersController < Admin::BaseController
Solution simple:
class Admin::UsersController < Admin::BaseController
Cependant, je suggère que vous divisiez également vos espaces de noms en parties distinctes pour éviter de futurs maux de tête. Donc, au lieu de ce qui précède, faites ceci:
# app/controllers/admin/users_controller.rb
module Admin
class UsersController < Admin::BaseController
# ...
end
end
Et faites de même avec tous les autres contrôleurs à espace de noms, tels que:
# app/controllers/admin/base_controller.rb
module Admin
class BaseController < ApplicationController
# ...
end
end
De cette façon, comme Rails charge et charge automatiquement et ainsi de suite, il sera toujours sûr de définir le module Admin avant d'essayer de charger les classes en dessous. Parfois, vous obtenez des erreurs constantes inconnues sinon. Le raisonnement est un peu complexe, mais si vous souhaitez y jeter un œil, consultez cet article .
Sur Rails Edge, il y a maintenant n guide officiel sur le sujet du chargement automatique des constantes .