Quando il controller dell'applicazione globale viene caricato per primo, il controller dell'applicazione con spazio dei nomi non viene caricato durante il caricamento di pagine all'interno di tale spazio dei nomi. Il controller di applicazione si presenta così:Rails 3.2.3 controller con nomi assegnati sovrascritti dai controller globali con lo stesso nome
class ApplicationController < ActionController::Base
protect_from_forgery
end
E il controller dell'applicazione namespace assomiglia a questo: "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
Quando usiamo la before_filter In questo modo:
class Admin::AssetsController < Admin::ApplicationController
before_filter :authenticate_admin!
end
Viene generato un "NoMethodError in Admin :: AssetsController # new". Ciò si verifica solo quando raggiungiamo la rotta globale prima del percorso con nomi. Se il server viene riavviato e il percorso dei nomi viene caricato per primo, tutto funziona correttamente.
In che file si trovano questi controller? –
app/controller/admin/application_controller.rb, app/controller/admin/assets_controller.rb e app/controller/application_controller.rb –