当首先加载全局应用程序控制器时,名称空间应用程序控制器在加载该名称空间内的页面时不加载。应用控制器看起来是这样的:Rails 3.2.3名称空间控制器被具有相同名称的全局控制器覆盖
class ApplicationController < ActionController::Base
protect_from_forgery
end
而命名空间中的应用控制器看起来是这样的:“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
当我们使用的before_filter像这样:
class Admin::AssetsController < Admin::ApplicationController
before_filter :authenticate_admin!
end
“引用Admin :: AssetsController#new中的NoMethodError”。这只发生在命名空间路由之前我们点击全局路由时。如果服务器重新启动并且命名空间路由首先被加载,那么所有事情都可以正常工作。
这些控制器在哪些文件? –
app/controllers/admin/application_controller.rb, app/controllers/admin/assets_controller.rb和 app/controllers/application_controller.rb –