shallow rails examples ruby-on-rails ruby rails-routing

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.