Когда глобальный контроллер приложения загружается первым, контроллер приложения с пространством имен не загружается при загрузке страниц в этом пространстве имен. Контроллер приложения выглядит так:
class ApplicationController < ActionController::Base
protect_from_forgery
end
И контроллер приложения с пространством имен выглядит так:
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
Когда мы используем before_filter "authenticate_admin!" примерно так:
class Admin::AssetsController < Admin::ApplicationController
before_filter :authenticate_admin!
end
Выдается ошибка «NoMethodError in Admin::AssetsController#new». Это происходит только тогда, когда мы попадаем на глобальный маршрут перед маршрутом в пространстве имен. Если сервер перезапускается и сначала загружается маршрут с пространством имен, все работает правильно.