ruby on rails - rails - Error de enrutamiento-constante sin inicializar
routes ruby on rails (3)
No pude arreglar esto en Rails 3.2.12, tal vez me esté faltando algo.
config / route.rb
get "home/index"
root :to => "home#index"
devise_for :users, :only => :omniauth_callbacks
match ''users/auth/:provider/callback'' => ''authentications#create''
match ''/auth/:provider/signout'' => ''authentications#signout''
app / controllers / authentication_controller.rb
class AuthenticationsController < ApplicationController
...
end
aplicación / modelos / authentication.rb
class Authentication < ActiveRecord::Base
...
end
Creo que debería funcionar con mi conocimiento actual, pero hay algo que extraño.
Mi amable pregunta sería decir qué está mal, por favor.
Error de conteo
uninitialized constant AuthenticationsController
Este es un mensaje que aparece en http://localhost:3000/auth/facebook/signout
Aunque esta pregunta ha sido respondida, encontré otro caso en el que estaba recibiendo este error y quería documentarlo aquí para la posteridad.
Si tiene dos rutas similares definidas en su archivo route.rb sin los controladores correspondientes, obtendrá el error constante sin inicializar.
Pasos para reproducir:
rails generate scaffold foobar name:string
bundle exec rake db:migrate
agregue recursos: foobars a route.rb a un nuevo alcance (nota: el recurso foobars ya se agregó automáticamente a la parte superior de sus rutas.rb durante la generación de andamios) como esto:
resources :foobars
########################################
# SUPER
########################################
constraints host: ENV[''SUPER_HOST''] do
scope module: :super do
resources :foobars
get ''/'' => ''super#index''
end
end
Ahora, mueva / app / views / foobars a / app / views / super / foobars y mueva /app/controllers/foobars_controller.rb a /app/controllers/super/foobars_controller.rb Asegúrese de que foobars_controller.rb esté en el Super módulo :
class Super::FoobarsController < ApplicationController
Ahora vaya a your.dev.server / foobars / Debería aparecer este error: Error de enrutamiento constante no inicializada FoobarsController
Ahora, elimine recursos: foobars desde el inicio de las rutas.rb ¡Debería funcionar ahora!
Me tomó un tiempo averiguar por qué estaba recibiendo este error, y no me di cuenta de que al generar el andamio se agrega una entrada en route.rb
Rails requiere que el nombre del archivo coincida con el nombre de la clase. Por lo tanto, debe cambiar el nombre de app/controllers/authentication_controller.rb
a app/controllers/authentications_controller.rb
.
Si bien no responde a su pregunta específica, recibí el error con lo siguiente en mis rutas.rb
resources :republishes do
post ''/attempt_all'', :to => ''republishes/#attempt_all'' . . .
que cambié a
resources :republishes do
post ''/attempt_all'', :to => ''republishes#attempt_all'' . . .
Eliminar la barra solucionó mi problema.