È possibile aggiungere il seguente in ApplicationHelper
:
def current_layout
(controller.send :_layout).inspect.split("/").last.gsub(/.html.erb/,"")
end
e si può chiamare di conseguenza in set_meta_tags
metodo. Qualcosa di simile,
def set_meta_tags
title = (current_layout != "application") ? "#{current_layout} ::" : false
set_meta title: "#{layout} #{setting(:site, :title)}", description: setting(:site, :description)
end
NOTA:
.inspect
mi dà il nome del layout con il suo percorso relativo.
.split("/").last
rimuoverà il percorso relativo e restituirà solo il nome del layout (con estensione).
.gsub(/.html.erb/)
rimuove la parte di estensione del layout. Potrebbe essere necessario regolare lo extension
in base al motore di modello che si sta utilizzando, ad es. In caso di Haml utilizzare .html.haml
.
mia soluzione
Da una chiacchierata con Kirti, sembra che il mio dimenticando di menzionare che avevamo impostato manualmente layout
era un grosso problema. Ciò funzionerà se si imposta manualmente il layout:
#app/helpers/application_helper.rb
def current_layout
self.send :_layout
end
def set_meta_tags
title = (current_layout != "application") ? "#{current_layout.titleize} :: " : ""
set_meta title: title + setting(:site, :title), description: setting(:site, :description)
end
fonte
2014-04-01 13:54:49
Spasibo! Fammi provare –
In realtà, tieni duro non funziona così bene - fammi fare il debug –