当全球应用控制器第一次加载,加载该命名空间中的网页时,命名空间中的应用控制器不加载。 应用控制器看起来是这样的:
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
A “NoMethodError在管理:: AssetsController#新的” 被抛出。 这只有当我们的命名空间的路线前冲击全球路线发生。 如果服务器重新启动,并且命名空间的路径首先加载一切正常。