Giochiamo coi layouts, più che altro aiutatemi!

Ciao a tutti, sto giocando con la mia applicazione di prova, la sto
aggiornando a rails 2.0.2 ed intanto cerco di migliorarla.
Nel tentativo di applicare il DRY, vorrei avere un unico layout
applicativo ed aggiungere una parte in più per il controller admin, un
semplice navbar coi link per la gestione di active scaffold.
Quindi la domanda è semplice: come faccio ad avere un application.rhtml
(perdonatemi l’estensione antiquata) con lo scheletro ed includere altro
html dinamicamente, per es. dove ci sono le X? (oltre al
@content_for_layout):

<%= APPLICATION_NAME %>
XXXXXXXXXXXXXX
<% render(:partial => "notice") %> <%= @content_for_layout %>

mi piacerebbe fare qualcosa tipo:
<% render(:partial => “navbar” :layout=>@controller) %>

On Mar 6, 2008, at 6:58 PM, Marco M. wrote:

@content_for_layout):

nei tuoi template:

<% content_for :xxx do -%>

<% end -

nel tuo layout:

<%= yield :xxx %>

S.

Non ho ancora potuto provare il tuo suggerimento ma intanto ti ringrazio

Marco M. wrote:

Non ho ancora potuto provare il tuo suggerimento ma intanto ti ringrazio

Ok per l’uso normale funziona il problema è che, come al solito, il mio
caso è un pò più specifico.
Utilizzando active scaffold non posso editare la vista per passare il
contenuto variabile del singolo template, vorrei quindi fare una
selezione dal layout applicativo, se questo controller fa questo
altrimenti fa cio’ che decido per il default.

Sto provando a fare questo, nel layout:

<% out=yield :navbar ? out : render(:partial => ‘navbar’) %>

se passo il contenuto :navbar mostra quello altrimenti deve andare a
pescarlo dal parziale nella directory del controller.
Solo non funziona come dovrebbe, se passo il contenuto lo mostra ma se
non lo passo non esplode il parziale… e stranamente se non esiste
genera l’exception quindi lo cerca ma non lo mostra, bo.

Risolto questo mi rimane sempre la noia del duplicare il parziale in
tutte le sottocartelle delle viste, vorrei per capire se c’è un sistema
più elegante che segui lo stile DRY

Stefano C. wrote:

Se e’ sempre lo stesso lo puoi mettere in una directory comune:

Si è sempre lo stesso, buona idea grazie

On Mar 10, 2008, at 4:00 PM, Marco M. wrote:

<%= yield(:navbar) || render(:partial => “navbar”) %>

Risolto questo mi rimane sempre la noia del duplicare il parziale in
tutte le sottocartelle delle viste, vorrei per capire se c’è un
sistema
più elegante che segui lo stile DRY

Se e’ sempre lo stesso lo puoi mettere in una directory comune:

<%= yield(:navbar) || render(:partial => “shared/navbar”) %>

S.