Wenn der globale Anwendungscontroller zuerst geladen wird, wird der Namespace-Anwendungscontroller nicht geladen, wenn Seiten in diesen Namespace geladen werden. Der Applikations-Controller sieht wie folgt aus:3.2.3 Namespace-Controller, die von globalen Controllern mit demselben Namen überschrieben werden
class ApplicationController < ActionController::Base
protect_from_forgery
end
Und der Namespaced Anwendung Controller sieht wie folgt aus: "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
Wenn wir die before_filter verwenden wie folgt:
class Admin::AssetsController < Admin::ApplicationController
before_filter :authenticate_admin!
end
Ein "NoMethodError in Admin :: AssetsController # new" wird ausgelöst. Dies tritt nur auf, wenn wir die globale Route vor der Namespace-Route treffen. Wenn der Server neu gestartet wird und die Namespace-Route zuerst geladen wird, funktioniert alles ordnungsgemäß.
In welchen Dateien befinden sich diese Controller? –
app/controllers/admin/application_controller.rb, app/controllers/admin/assets_controller.rb und app/controllers/application_controller.rb –