# Popolare partial attraverso link\_to

**URL:** <https://www.ruby-forum.com/t/popolare-partial-attraverso-link-to/135530>\
**Category:** IT\
**Created:** [April 22, 2008, 10:17pm UTC](https://www.ruby-forum.com/t/popolare-partial-attraverso-link-to/135530 "2008-04-22T22:17:25Z")\
**Posts on this page:** 8\
**Page:** 1

<div class="post-metadata">

**Author:** ![Matteo\_Buferli](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/e47774/32.png) [@Matteo\_Buferli](https://www.ruby-forum.com/u/Matteo_Buferli)\
**Post date:** [April 22, 2008, 10:17pm UTC](https://www.ruby-forum.com/t/popolare-partial-attraverso-link-to/135530/1 "2008-04-22T22:17:25Z")

</div>

-----BEGIN PGP SIGNED MESSAGE-----  
Hash: SHA1

Ciao a tutti,  
preso questo codice

# Scheda Paziente
\<%= debug(@patient) %\> \<%= debug(@vaccines) %\>

\<%= render :partial =\> ‘vaccines/all’ %\>

\<%= link\_to “Popola Vaccines” , $$$ %\>

dove in \_all non faccio nient’altro che stampare il contenuto di  
@vaccines.

Alla prima vista @vaccines e’ vuoto, ma cliccando su popola vaccines,  
vorrei che si mandasse a un metodo (che non modifichi nulla) e che  
faccia Vaccine.find(:all).  
E’ banale ma non riesco: io ho definito nel controller un metodo (ogni  
def del controller deve avere per forza una vista) che fa cio’, ma dopo  
il click lui cerca di andare a /controller/def e non va bene, deve  
semplicemente scrivere in quella variabile e basta.

Attendo ansiosamente

* * *

Matteo Buferli  
WEB: [http://www.buferli.com](http://www.buferli.com)  
PGP FINGERPRINT: B7C9 BE0A F77F 4747 56A2 87EC F6E5 8A01 65BB 58C1  
-----BEGIN PGP SIGNATURE-----  
Version: GnuPG v1.4.6 (GNU/Linux)  
Comment: Using GnuPG with Mozilla - [http://enigmail.mozdev.org](http://enigmail.mozdev.org)

iD8DBQFIDkes9uWKAWW7WMERAtR7AJ0WQYESnFP+eZ6BLR3wcssi/fZF/QCeNi5d  
9OPC2AriYreoP1WMbeKzhyE=  
=V/Q+  
-----END PGP SIGNATURE-----

---

<div class="post-metadata">

**Author:** ![Matteo\_Buferli](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/e47774/32.png) [@Matteo\_Buferli](https://www.ruby-forum.com/u/Matteo_Buferli)\
**Post date:** [April 23, 2008, 12:01pm UTC](https://www.ruby-forum.com/t/popolare-partial-attraverso-link-to/135530/2 "2008-04-23T12:01:41Z")

</div>

Matteo Buferli wrote:

> …
> 
> # Scheda Paziente
> \<%= debug(@patient) %\> \<%= debug(@vaccines) %\> \<%= render :partial =\> 'vaccines/all' %\> \<%= link\_to "Popola Vaccines" , $$$ %\>
> 
> dove in \_all non faccio nient’altro che stampare il contenuto di  
> @vaccines.  
> Alla prima vista @vaccines e’ vuoto, ma cliccando su popola vaccines,  
> vorrei che si mandasse a un metodo (che non modifichi nulla) e che  
> faccia Vaccine.find(:all).  
> E’ banale ma non riesco: io ho definito nel controller un metodo (ogni  
> def del controller deve avere per forza una vista) che fa cio’, ma dopo  
> il click lui cerca di andare a /controller/def e non va bene, deve  
> semplicemente scrivere in quella variabile e basta.
> 
> Attendo ansiosamente

Alla fine del tuo nuovo metodo, puoi far renderizzare di nuovo la stessa  
pagina, tramite un  
render :action=\>’’

Ti rimarrebbe pero’ il link inutile “Popola Vaccines”, che potresti non  
visualizzare se @vaccines e’ valorizzato ( dovrebbe esistere un metodo  
link\_to\_unless )

In alternativa, puoi usare AJAX, sostituendo il “\<%= render :partial =\>  
‘vaccines/all’ %\>” con un div (es

) ed il link\_to  
con un link\_to\_remote (specificando :update=\>‘vaccines’). La tua azione,  
in questo caso, dopo aver valorizzato @vaccines, dovra’ renderizzare la  
lista dei vaccini (puoi rinominare vaccines/\_all.erb.html in  
vaccines/all.erb.html e utilizzare questa view)

Ciao  
Massimo

---

<div class="post-metadata">

**Author:** ![Matteo\_Buferli](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/e47774/32.png) [@Matteo\_Buferli](https://www.ruby-forum.com/u/Matteo_Buferli)\
**Post date:** [April 23, 2008, 5:09pm UTC](https://www.ruby-forum.com/t/popolare-partial-attraverso-link-to/135530/3 "2008-04-23T17:09:26Z")

</div>

-----BEGIN PGP SIGNED MESSAGE-----  
Hash: SHA1

maner never wrote:

> > Alla prima vista @vaccines e’ vuoto, ma cliccando su popola vaccines,  
> > pagina, tramite un  
> > render :action=\>‘’

Innanzitutto grazie mille per la risposta, ma mi sono rimasti ancora  
alcuni dubbi:

il metodo che fa

def popola  
@vaccines = Vaccine.find :all  
render :action =\> paziente (la pagina attuale e’ paziente.html.erb)  
end

dove lo devo scrivere? io ho provato nel controller dove ho definito il  
metodo paziente, ma lui cerca di accedere a  
/controller/popola  
e mi ritorna errore.

> Ciao  
> Massimo

* * *

Matteo Buferli  
WEB: [http://www.buferli.com](http://www.buferli.com)  
PGP FINGERPRINT: B7C9 BE0A F77F 4747 56A2 87EC F6E5 8A01 65BB 58C1  
-----BEGIN PGP SIGNATURE-----  
Version: GnuPG v1.4.6 (GNU/Linux)  
Comment: Using GnuPG with Mozilla - [http://enigmail.mozdev.org](http://enigmail.mozdev.org)

iD8DBQFID1Du9uWKAWW7WMERAm4wAJ0XffjiHrGz3OtuLr6itn33akAp2QCcDS/5  
cHBq6nwddeI8xtgFYA7Kl8Q=  
=j/Nx  
-----END PGP SIGNATURE-----

---

<div class="post-metadata">

**Author:** ![Matteo\_Buferli](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/e47774/32.png) [@Matteo\_Buferli](https://www.ruby-forum.com/u/Matteo_Buferli)\
**Post date:** [April 23, 2008, 5:27pm UTC](https://www.ruby-forum.com/t/popolare-partial-attraverso-link-to/135530/4 "2008-04-23T17:27:14Z")

</div>

Matteo Buferli wrote:

> …  
> Innanzitutto grazie mille per la risposta, ma mi sono rimasti ancora  
> alcuni dubbi:
> 
> il metodo che fa
> 
> def popola  
> @vaccines = Vaccine.find :all  
> render :action =\> paziente (la pagina attuale e’ paziente.html.erb)  
> end
> 
> dove lo devo scrivere? io ho provato nel controller dove ho definito il  
> metodo paziente, ma lui cerca di accedere a  
> /controller/popola  
> e mi ritorna errore.

Si, va bene nello stesso controller.che suppongo cosi:

class PazientiController \< ApplicationController  
def paziente  
end

def popola  
@vaccines = Vaccine.find :all  
render :action =\> ‘paziente’  
end  
end

Il problema mi sa che e’ nel tuo strano link\_to, con $$$ come parametro

Prova a cambiarlo cosi’:  
\<%= link\_to “Popola Vaccines” , :action=\>‘popola’ %\>

---

<div class="post-metadata">

**Author:** ![Matteo\_Buferli](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/e47774/32.png) [@Matteo\_Buferli](https://www.ruby-forum.com/u/Matteo_Buferli)\
**Post date:** [April 23, 2008, 6:06pm UTC](https://www.ruby-forum.com/t/popolare-partial-attraverso-link-to/135530/5 "2008-04-23T18:06:26Z")

</div>

Ciao Matteo,

Fermo restando gli ottimi suggerimenti giÃ ricevuti,  
potresti incapsulare il rendering dei vaccini in un helper

# Scheda Paziente
\<%= debug(@patient) %\> \<%= debug(@vaccines) %\>

\<%= show\_vaccines(@patient, @vaccines) %\>

L’helper sarebbe scritto cosÃ¬:

def show\_vaccines(patient = nil, vaccines = nil)

if !patient.nil? and !vaccines.nil?  
render :partial =\> …  
else  
link\_to “Popola Vaccines”, :action =\> “popola”  
end

end

Qualora, come presumo (in questo caso, quale sarebbe l’utilitÃ  
dell’action “popola”?), ci fosse una relazione tra Patient e Vaccine,  
l’helper avrebbe un unico parametro (il Patient).

L’action nel controller rimarrebbe come negli altri suggerimenti.

Spero di non aver detto fesserie e di essere stato utile.

Saluti,  
Carmine

---

<div class="post-metadata">

**Author:** ![Matteo\_Buferli](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/e47774/32.png) [@Matteo\_Buferli](https://www.ruby-forum.com/u/Matteo_Buferli)\
**Post date:** [April 23, 2008, 6:30pm UTC](https://www.ruby-forum.com/t/popolare-partial-attraverso-link-to/135530/6 "2008-04-23T18:30:34Z")

</div>

-----BEGIN PGP SIGNED MESSAGE-----  
Hash: SHA1

maner never wrote:

> > end
> > 
> > dove lo devo scrivere? io ho provato nel controller dove ho definito il  
> > metodo paziente, ma lui cerca di accedere a  
> > /controller/popola  
> > e mi ritorna errore.
> 
> Si, va bene nello stesso controller.che suppongo cosi:
> 
> class PazientiController \< ApplicationController  
> def paziente  
> @vaccines = []  
> @patient = Patient.find(params[:id])  
> Prova a cambiarlo cosi’:  
> \<%= link\_to “Popola Vaccines” , :action=\>‘popola’ %\>

Si con $$$ intendevo qualcosa di generico, perche’ non sapevo se potevo  
metterlo nello stesso controller.

Ho notato che cosi facendo, dopo aver chiamato popola e aver  
renderizzato paziente, perdo la variabile @patient nella “nuova”  
paziente.

Ti ho editato il codice per farti capire come sono strutturate i miei  
metodi.

Altra domanda, non posso in quel link\_to fare si che richiami un metodo  
definito nel model Vaccine ad esempio che prenda quella variabile e la  
riempa al click? se si come posso fare per dire a link\_to di chiamare un  
metodo definito nel model di una classe su una data variabile??

Grazie ancora per la gentilezza.

Saluti.

* * *

Matteo Buferli  
WEB: [http://www.buferli.com](http://www.buferli.com)  
PGP FINGERPRINT: B7C9 BE0A F77F 4747 56A2 87EC F6E5 8A01 65BB 58C1  
-----BEGIN PGP SIGNATURE-----  
Version: GnuPG v1.4.6 (GNU/Linux)  
Comment: Using GnuPG with Mozilla - [http://enigmail.mozdev.org](http://enigmail.mozdev.org)

iD8DBQFID2QB9uWKAWW7WMERAgHYAJ42ZSxCxzJBBCaKhehtBiszMiX8ZACfSGp4  
gDYiIxCIeh2NahLwHQiSAiw=  
=hBph  
-----END PGP SIGNATURE-----

---

<div class="post-metadata">

**Author:** ![Matteo\_Buferli](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/e47774/32.png) [@Matteo\_Buferli](https://www.ruby-forum.com/u/Matteo_Buferli)\
**Post date:** [April 23, 2008, 6:20pm UTC](https://www.ruby-forum.com/t/popolare-partial-attraverso-link-to/135530/7 "2008-04-23T18:20:32Z")

</div>

-----BEGIN PGP SIGNED MESSAGE-----  
Hash: SHA1

Carmine M. wrote:

> \<%= show\_vaccines(@patient, @vaccines) %\>  
> end
> 
> Qualora, come presumo (in questo caso, quale sarebbe l’utilità  
> dell’action “popola”?), ci fosse una relazione tra Patient e Vaccine,  
> l’helper avrebbe un unico parametro (il Patient).
> 
> L’action nel controller rimarrebbe come negli altri suggerimenti.
> 
> Spero di non aver detto fesserie e di essere stato utile.
> 
> Saluti,  
> Carmine

Grazie ancora a tutti, ora provo subito.

Ti spiego la mia popola: patient e’ in relazione ‘molti a molti’ con  
vaccine.  
Sto facendo un form dove e’ possibile eventualmente aggiungere un  
vaccino, ma siccome reputo inutile caricare tutti i possibili vaccini se  
non si vuole esplicitamente aggiungere un vacino, sto cercando un  
sistema che con un pulsante, riempa questa variabile definita come [] di  
base.

Ora comunque provo le varie soluzione, se riscontro altri problemi mi  
affido alla vostra grande esperienza e generosita’.

Grazie a tutti veramente.  
Buona serata.

* * *

Matteo Buferli  
WEB: [http://www.buferli.com](http://www.buferli.com)  
PGP FINGERPRINT: B7C9 BE0A F77F 4747 56A2 87EC F6E5 8A01 65BB 58C1  
-----BEGIN PGP SIGNATURE-----  
Version: GnuPG v1.4.6 (GNU/Linux)  
Comment: Using GnuPG with Mozilla - [http://enigmail.mozdev.org](http://enigmail.mozdev.org)

iD8DBQFID2G19uWKAWW7WMERAsPZAJ9OpNiTea5T8YwvJTkMSooeEhilhwCfRc8a  
TUfv3UcWW+vDAV7U296OaKs=  
=JNfw  
-----END PGP SIGNATURE-----

---

<div class="post-metadata">

**Author:** ![Matteo\_Buferli](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/e47774/32.png) [@Matteo\_Buferli](https://www.ruby-forum.com/u/Matteo_Buferli)\
**Post date:** [April 23, 2008, 10:14pm UTC](https://www.ruby-forum.com/t/popolare-partial-attraverso-link-to/135530/8 "2008-04-23T22:14:54Z")

</div>

> Ho notato che cosi facendo, dopo aver chiamato popola e aver  
> renderizzato paziente, perdo la variabile @patient nella “nuova”  
> paziente.
> 
> Ti ho editato il codice per farti capire come sono strutturate i miei  
> metodi.
> 
> Altra domanda, non posso in quel link\_to fare si che richiami un metodo  
> definito nel model Vaccine ad esempio che prenda quella variabile e la  
> riempa al click? se si come posso fare per dire a link\_to di chiamare un  
> metodo definito nel model di una classe su una data variabile??

Rispondo di fretta. Cosi’ dovrebbe funzionare

\<%= link\_to “Popola Vaccines” , :action=\>‘popola’, :id=\> @patient %\>

def popola  
@vaccines = Vaccine.find :all  
@patient=Patient.find(params[:id])  
render :action =\> paziente (la pagina attuale e’ paziente.html.erb)  
end
