Un layout di solito contiene tutta la struttura principale di una
pagina html. Invece, potresti creare altri .rhtml che contengono
elementi communi tipo la intestazione o il menu, ecc. …
praticamente io vorrei avere un layout “generale” che includa l’
con i
relativi css e js e l’apertura e chiusura del .
i layout “specifici” per controller dovrebbero aggiungere a questa
struttura
un titolo
e un footer
la soluzione che ho in mente è una soluzione a “tre componenti”: il
controller “riempie” una vista (action.rhtml) generando un blocco HTML,
questo blocco viene incluso nel layout relativo al controller (
controller.rhtml) che a sua volta viene incluso nel layout generale
della
webapp (application.rhtml).
Senza le parentesi tonde a delimitare il parametro del metodo upto
l’interprete si confonde e non sa come procedere.
Questo è uno dei motivi per cui le parentesi per delimitare gli
argomenti sono sempre consigliate.
Confusione in cui l’interprete non cade nel primo caso:
1.upto 10 do |x|
puts x
end
mi pare di ricordare per il discorso cui ho accennato di priorità… certo
è
un comportamento un po’ curioso, così a occhio…
do è una parola chiave che indica solo e soltanto l’inizio di un
blocco mentre { può indicare un hash o un blocco e questi elementi
possono essere passati come parametri quindi se non delimiti con le
parentesi tonde i parametri che vuoi passare l’interprete non sa bene
come comportarsi.
P.S. non ho voglia di citare un paragrafo ma se hai “Programming Ruby”
puoi leggere l’ultimo paragrafo di pag. 356
Si potrebbe creare un sistema che sopporta 3 livelli ma se non devi
fare cose strane credo che sia meglio usare solo 2 livelli.
Per farlo con 3 livelli dovresti chiamare la .rhtml per il controller
al application.rhtml per esempio: <%= render
“#{@controller.controller_name}/controller_layout” %> (non so se devi
anche passare i parametri o se sono globale). http://host/controller/action dovrebbe chiamare la pagina
/app/views/controller/controller_layout
Si può farlo così ma hai provato a guardare a content_for (per esempio)