Data la seguente struttura di controllo:Rails portata
# application_controller.rb
class ApplicationController < ActiveController::Base; end
# pages_controller.rb
class PagesController < ApplicationController; end
# admin/application_controller.rb
module Admin
class ApplicationController < ::ApplicationController; end
end
# admin/pages_controller.rb
module Admin
class PagesController < ApplicationController; end
end
ci si aspetterebbe Admin::PagesController
ereditare da Admin::ApplicationController
e lo fa. Ma ho notato che a volte eredita da ::ApplicationController
.
così ho deciso di non rischiare e ha cambiato dichiarazione di tutti i controller in /admin
per indirizzare specificamente Admin::ApplicationController
# admin/pages_controller.rb
module Admin
class PagesController < Admin::ApplicationController; end
end
Va bene che funziona, ma da quello che so che è stato corretto in primo luogo. Perché Rails talvolta eredita da un controller sbagliato?
Admin::PagesController
volte eredita da ApplicationController
invece di Admin::ApplicationController
pur essendo entrambi nella stessa module Admin
avevo sperimentato problema simile !!! – Hardik