Gerarchia di layout


#1

salve ragazzi,
ho un doppio layout, a livello di applicazione (application.rhtml) e a
livello di controller (user.rhtml).

Come faccio a realizzare una struttura a tre livelli??
L’application include il controller che include la vista.

grazie :slight_smile:


everything has got to end sometime we were satellites drifting off into
space
vega 4 - burn and fade away


#2

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. …

Cmq, non so se ho capito bene la tua domanda


#3

innanzitutto grazie per la risposta :slight_smile:

cercherò di essere piu preciso.

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).

tutto questo ovviamente puntando a http://host/controller/action

spero di essere stato piu chiaro che in precedenza :slight_smile:

Il 31/03/07, Rob C. removed_email_address@domain.invalid ha scritto:

livello di controller (user.rhtml).


Ml mailing list
removed_email_address@domain.invalid
http://lists.ruby-it.org/mailman/listinfo/ml


Ml mailing list
removed_email_address@domain.invalid
http://lists.ruby-it.org/mailman/listinfo/ml


everything has got to end sometime we were satellites drifting off into
space
vega 4 - burn and fade away


#4

Perchè così funziona?

1.upto (10) {|x| puts x}

Uhm, cosa c’è di strano?


Massimiliano M.
code: http://dev.hyperstruct.net
blog: http://blog.hyperstruct.net


#5

Non capisco bene perchè così si:
1.upto (10) {|x| puts x}

E così no:
1.upto 10 {|x| puts x}


#6

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.

Il 01/04/07, Renatoremoved_email_address@domain.invalid ha scritto:


#7

Dunque: se cerco di usare un blocco in questo modo funziona

1.upto 10 do |x|
puts x
end

E va bene.
Se lo dichiaro così l’interprete dà errore:

1.upto 10 {|x| puts x}

E va ancora bene visto che le graffe hanno una priorità diversa rispetto
alla coppia do…end

La domanda
è:
Perchè così funziona?

1.upto (10) {|x| puts x}

Ciao a tutti.


#8

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…


#9

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

Il 01/04/07, Renatoremoved_email_address@domain.invalid ha scritto:


#10

Vero…
Thx.


#11

nessun problema!

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)

<% content_for :sidebar do %>

Pagine

<% if @pages %>
    <%= render :partial => page', :collection => @pages %>
<% end %>

dopo, nel application.rhtml metti <%= yield :sidebar %>

Altrimenti, nel application.rhtml metti <%= footer %> e poi in ogni
helper

module PagesHelper
def footer
"Ciao da #{@page.title}
end
end


#12

ok perfetto

pensavo e speravo ci fosse una soluzione diciamo più “elegante”

grazie

Il 02/04/07, Rob C. removed_email_address@domain.invalid ha scritto:

http://host/controller/action dovrebbe chiamare la pagina
<% end %>

struttura

On 30/03/07, tarini removed_email_address@domain.invalid wrote:


Ml mailing list


Ml mailing list
removed_email_address@domain.invalid
http://lists.ruby-it.org/mailman/listinfo/ml


Ml mailing list
removed_email_address@domain.invalid
http://lists.ruby-it.org/mailman/listinfo/ml


everything has got to end sometime we were satellites drifting off into
space
vega 4 - burn and fade away