impostazione del "nome della visualizzazione" di un controller
-
29-10-2019 - |
Domanda
Vorrei centralizzare azioni simili di alcuni controller e scrivere un controller da cui ereditano gli altri controller.Funziona bene.
# calling Configurations#index will render configurations/index.html.erb
# while 'configurations' being the internal controller_path used to look for the view
class ConfigurationsController < EditorController
end
class EditorController < ApplicationController
def index
render 'index'
end
end
Ma ora vorrei centralizzare le viste su "base" del controller, quindi se viene chiamato un controller ereditario, il controller_path utilizzato dovrebbe essere quello del controller di base.
Esiste un modo per riscrivere il nome di un controller o il percorso_controller?
Ho esaminato il sorgente di AbstractController :: Base e l'ho trovato (riga 90)
def controller_path
@controller_path ||= name.sub(/Controller$/, '').underscore unless anonymous?
end
Quindi devo solo impostare @controller_path dal mio controller di base, vero?Questo non cambia nulla:
#just does the same as above
class EditorController < ApplicationController
@controller_path = 'editor'
def index
render 'index'
end
end
Quindi esiste un modo per impostare manualmente controller_path?
grazie in anticipo!
Soluzione
dannazione l'ho trovato da solo!
Ho appena sovrascritto il metodo controller_path:
class EditorController < ApplicationController
def controller_path
'editor'
end
#...
end
questo utilizzerà mai l '"editor" della cartella di visualizzazione per qualsiasi controller ereditato.