-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Ciao a tutti, preso questo codice <h1>Scheda Paziente</h1> <%= 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 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 iD8DBQFIDkes9uWKAWW7WMERAtR7AJ0WQYESnFP+eZ6BLR3wcssi/fZF/QCeNi5d 9OPC2AriYreoP1WMbeKzhyE= =V/Q+ -----END PGP SIGNATURE-----
on 22.04.2008 22:17
on 23.04.2008 12:01
Matteo Buferli wrote: > ... > <h1>Scheda Paziente</h1> > <%= 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=>'<nome vista Scheda Paziente>' 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 <div id='vaccines' />) 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
on 23.04.2008 17:09
-----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=>'<nome vista Scheda Paziente>' > 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 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 iD8DBQFID1Du9uWKAWW7WMERAm4wAJ0XffjiHrGz3OtuLr6itn33akAp2QCcDS/5 cHBq6nwddeI8xtgFYA7Kl8Q= =j/Nx -----END PGP SIGNATURE-----
on 23.04.2008 17:27
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' %>
on 23.04.2008 18:06
Ciao Matteo,
Fermo restando gli ottimi suggerimenti già ricevuti,
potresti incapsulare il rendering dei vaccini in un helper
<h1>Scheda Paziente</h1>
<%= 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
on 23.04.2008 18:20
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Carmine Moleti 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 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 iD8DBQFID2G19uWKAWW7WMERAsPZAJ9OpNiTea5T8YwvJTkMSooeEhilhwCfRc8a TUfv3UcWW+vDAV7U296OaKs= =JNfw -----END PGP SIGNATURE-----
on 23.04.2008 18:30
-----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 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 iD8DBQFID2QB9uWKAWW7WMERAgHYAJ42ZSxCxzJBBCaKhehtBiszMiX8ZACfSGp4 gDYiIxCIeh2NahLwHQiSAiw= =hBph -----END PGP SIGNATURE-----
on 23.04.2008 22:14
> 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