-----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
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-----
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
-----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
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-----
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’ %>
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
-----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-----
-----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
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-----
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