# Incapsulare View differenti nello stesso layout

**URL:** <https://www.ruby-forum.com/t/incapsulare-view-differenti-nello-stesso-layout/214600>\
**Category:** IT\
**Created:** [December 7, 2011, 12:39am UTC](https://www.ruby-forum.com/t/incapsulare-view-differenti-nello-stesso-layout/214600 "2011-12-07T00:39:25Z")\
**Posts on this page:** 8\
**Page:** 1

<div class="post-metadata">

**Author:** ![luislavena](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/l/0ea827/32.png) [@luislavena](https://www.ruby-forum.com/u/luislavena)\
**Post date:** [December 7, 2011, 12:39am UTC](https://www.ruby-forum.com/t/incapsulare-view-differenti-nello-stesso-layout/214600/1 "2011-12-07T00:39:25Z")

</div>

Dunque,  
avevo gia’ sollevato il quesito sul mio topic di presentazione ma ora  
che ho avuto modo di dare una letta alla guida:

> **[Layouts and Rendering in Rails — Ruby on Rails Guides](https://guides.rubyonrails.org/layouts_and_rendering.html)**
>
> Layouts and Rendering in RailsThis guide covers the basic layout features of Action Controller and Action View.After reading this guide, you will know: How to use the various rendering methods built into Rails. How to create layouts with multiple...

posso porre con piu’ precisione il mio quesito (che probabilmente ha una  
risposta nella stessa guida che ho seguito :facepalm:)

Allora:

ho il layout di default “application.html.erb” che sfrutta yield per  
“inserire” la mia “home/index.html.erb” nel resto del layout…

Bene, la mia index, fa riferimento (da quanto ho capito) al controller  
“home\_controller.rb”

Fin qui tutto apposto.  
Il problema e’ che io pensavo di creare altri due “Controller-View”,  
chiamati Header e Footer (con le rispettive View, es.  
“footer/footer.html.erb”) che gestissero rispettivamente la testata e il  
piede della mia applicazione…  
Come faccio a inserire nel layout application queste due View?

Ho provato in questo modo:

…

 \<%= yield :header %\>
 \<%= yield %\>
 \<%= yield :footer %\> ...

ma a quanto pare ho capito male…

So che forse mi sto complicando la vita e che probabilmente ancora non  
ci ho capito un acca, quindi siate liberi di criticare le mie decisioni  
e di illuminarmi verso la retta via!

grazie anticipatamente, Luca

---

<div class="post-metadata">

**Author:** ![luca](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/l/51bf81/32.png) [@luca](https://www.ruby-forum.com/u/luca)\
**Post date:** [December 7, 2011, 11:31am UTC](https://www.ruby-forum.com/t/incapsulare-view-differenti-nello-stesso-layout/214600/2 "2011-12-07T11:31:31Z")

</div>

2011/12/7 Luca B. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)

> \<%= yield :header %\>
> 
> \<%= yield %\>
> \<%= yield :footer %\>

Per popolare le varie yield puoi usare l’helper actionview content\_for

> **[content\_for(name, content = nil, options = {}, &block) Link -...](https://api.rubyonrails.org/classes/ActionView/Helpers/CaptureHelper.html#method-i-content_for)**
>
> Calling content\_for stores a block of markup in an identifier for later use. In order to access this stored content in other templates, helper modules or the layout, you would pass the identifier as an argument to content\_for. | Action View Capture...

Se header e footer sono uguali per tutto il sito ti conviene usare un  
partial e metterlo nella cartella app/views/shared/\_footer.html.erb e  
poi  
chiamarlo da application.html.erb con \<%= render “shared/footer” %\>

Ciao  
Stefano

---

<div class="post-metadata">

**Author:** ![luca](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/l/51bf81/32.png) [@luca](https://www.ruby-forum.com/u/luca)\
**Post date:** [December 7, 2011, 11:35am UTC](https://www.ruby-forum.com/t/incapsulare-view-differenti-nello-stesso-layout/214600/3 "2011-12-07T11:35:52Z")

</div>

> Per popolare le varie yield puoi usare l’helper actionview content\_for

> **[content\_for(name, content = nil, options = {}, &block) Link -...](https://api.rubyonrails.org/classes/ActionView/Helpers/CaptureHelper.html#method-i-content_for)**
>
> Calling content\_for stores a block of markup in an identifier for later use. In order to access this stored content in other templates, helper modules or the layout, you would pass the identifier as an argument to content\_for. | Action View Capture...

> 

Grazie, appena posso do’ un occhiata!

Se header e footer sono uguali per tutto il sito ti conviene usare un

> partial e metterlo nella cartella app/views/shared/\_footer.html.
> 
> > erb e poi  
> > chiamarlo da application.html.erb con \<%= render “shared/footer” %\>
> 
> Ecco, e’ proprio per questo che ho creato due controller-view: Header,  
> Footer… in quanto sono si due porzioni uguali per tutto il sito, ma  
> potrebbero non essere statiche… quindi mi sembrava giusto creare  
> proprio  
> delle entit per entrambi…

2011/12/7 Stefano P. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)

---

<div class="post-metadata">

**Author:** ![luca](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/l/51bf81/32.png) [@luca](https://www.ruby-forum.com/u/luca)\
**Post date:** [December 7, 2011, 11:43am UTC](https://www.ruby-forum.com/t/incapsulare-view-differenti-nello-stesso-layout/214600/4 "2011-12-07T11:43:55Z")

</div>

2011/12/7 Luca B. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)

> Ecco, e’ proprio per questo che ho creato due controller-view: Header,  
> Footer… in quanto sono si due porzioni uguali per tutto il sito, ma  
> potrebbero non essere statiche… quindi mi sembrava giusto creare proprio  
> delle entit per entrambi…

Se la logica non estremamente complessa puoi spostarne quanto riesci  
sul  
model e scrivere degli helper da usare poi nei partial.

Se per devi realizzare un sito con molti widget e componenti potresti  
utilizzare la gemma “cells” in cui ogni cella ha il suo controller ma  
nel  
tuo caso la trovo sovradimensionata per il problema.

---

<div class="post-metadata">

**Author:** ![luca](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/l/51bf81/32.png) [@luca](https://www.ruby-forum.com/u/luca)\
**Post date:** [December 7, 2011, 11:47am UTC](https://www.ruby-forum.com/t/incapsulare-view-differenti-nello-stesso-layout/214600/5 "2011-12-07T11:47:00Z")

</div>

Sisi, per ora sto sperimentando, l’obiettivo finale sarebbe fare una web  
app abbastanza sofisticata, ma per ora molto presto…

Cerco solo di impostare al meglio il progetto dall’inizio diciamo…  
Comunque pian piano mi faro’ strada! Sono ancora disorientato per il  
momento 😛

Il giorno 07 dicembre 2011 11:43, Stefano P.  
\<[removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)

> ha scritto:

---

<div class="post-metadata">

**Author:** ![luca](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/l/51bf81/32.png) [@luca](https://www.ruby-forum.com/u/luca)\
**Post date:** [December 7, 2011, 3:10pm UTC](https://www.ruby-forum.com/t/incapsulare-view-differenti-nello-stesso-layout/214600/6 "2011-12-07T15:10:34Z")

</div>

On Wed, Dec 7, 2011 at 3:04 PM, Luigi M. - [grigio.org](http://grigio.org)  
\<[removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)

> wrote:

> Occhio che se questi pezzi di view hanno bisogno di mantenere uno stato  
> o chiamare il db meglio gestirli come “Cells”.
> 
> [http://cells.rubyforge.org/](http://cells.rubyforge.org/)
> 
> Luigi

Questa mi pare proprio una grande gemma!

Complimenti per la segnalazione! E grazie!

Riccardo

---

<div class="post-metadata">

**Author:** ![luca](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/l/51bf81/32.png) [@luca](https://www.ruby-forum.com/u/luca)\
**Post date:** [December 7, 2011, 3:04pm UTC](https://www.ruby-forum.com/t/incapsulare-view-differenti-nello-stesso-layout/214600/7 "2011-12-07T15:04:02Z")

</div>

Occhio che se questi pezzi di view hanno bisogno di mantenere uno stato  
o chiamare il db è meglio gestirli come “Cells”.

[http://cells.rubyforge.org/](http://cells.rubyforge.org/)

Luigi

---

<div class="post-metadata">

**Author:** ![luca](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/l/51bf81/32.png) [@luca](https://www.ruby-forum.com/u/luca)\
**Post date:** [December 7, 2011, 3:13pm UTC](https://www.ruby-forum.com/t/incapsulare-view-differenti-nello-stesso-layout/214600/8 "2011-12-07T15:13:42Z")

</div>

Felice di aver contribuito alla vostra condivisione 😛 (almeno servito  
a  
qualcosa il mio topic!)

Io momentaneamente non ci ho capito molto, e forse che per ora lascio  
stare sta cosa del frammentare le view…

Cmq terr in considerazione anche questa cells!

Il giorno 07 dicembre 2011 15:09, Duncan [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) ha  
scritto:
