Cuando se carga primero el controlador de aplicación global, el controlador de aplicación de espacio de nombres no se carga al cargar páginas dentro de ese espacio de nombres. El controlador de aplicación es el siguiente:Rails 3.2.3 Controles de espacio de nombres reemplazados por controladores globales con el mismo nombre
class ApplicationController < ActionController::Base
protect_from_forgery
end
y el controlador de la aplicación de espacios de nombres tiene este aspecto: "! Authenticate_admin"
class Admin::ApplicationController < ApplicationController
def authenticate_admin!
if current_admin.nil?
redirect_to new_admin_session_url
end
end
private
def current_admin
@current_admin ||= Admin.find(session[:admin_id]) if session[:admin_id]
end
helper_method :current_admin
end
Cuando usamos la before_filter de esta manera:
class Admin::AssetsController < Admin::ApplicationController
before_filter :authenticate_admin!
end
Se genera un "NoMethodError en Admin :: AssetsController # new". Esto solo ocurre cuando alcanzamos la ruta global antes de la ruta del espacio de nombres. Si se reinicia el servidor y se carga la ruta de espacio de nombres, todo funciona correctamente.
¿En qué archivos están estos controladores? –
aplicación/controladores/admin/application_controller.rb, aplicación/controladores/admin/assets_controller.rb y aplicación/controladores/application_controller.rb –