# ROR 2: consiglio su come aggiornare un dato

**URL:** <https://www.ruby-forum.com/t/ror-2-consiglio-su-come-aggiornare-un-dato/158662>\
**Category:** IT\
**Created:** [January 26, 2009, 4:03pm UTC](https://www.ruby-forum.com/t/ror-2-consiglio-su-come-aggiornare-un-dato/158662 "2009-01-26T16:03:14Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![daneel\_olivaw](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/58f4c7/32.png) [@daneel\_olivaw](https://www.ruby-forum.com/u/daneel_olivaw)\
**Post date:** [January 26, 2009, 4:03pm UTC](https://www.ruby-forum.com/t/ror-2-consiglio-su-come-aggiornare-un-dato/158662/1 "2009-01-26T16:03:14Z")

</div>

Buongiorno lista.  
Sto facendo un’agendina che sarÃ usata dagli operatori per contattare  
dei clienti; avevo intenzione di farla funzionare cosÃ¬: c’Ã¨ la lista di  
nomi, l’operatore clicca su uno e vede i dettagli (classico “show”);  
oltre a questi perÃ² c’Ã¨ anche un pulsante “Prossimo” che serve per  
salvare su una tabella apposita i riferimenti dell’operatore che ha  
chiamato, chi Ã¨ stato chiamato, quando ed eventuali note per tenere  
traccia ed evitare richiamate consecutive. Fin qui funziona tutto.  
Volevo anche fare in modo che nella tabella dei contatti mi aggiornasse  
il campo “chiamato” (un booleano), in modo da vedere immediatamente chi  
non fosse mai stato contattato… e qui cominciano i dolori…  
Premetto che sto ancora imparando, quindi se scrivo oscenitÃ ditemelo.  
Bene, ecco qui cos’ho combinato:

nel controller della tabella dei contatti c’Ã¨ (ah, per ora premendo il  
pulsante si ritorna all’elenco, prossimamente sistemerÃ², un macello alla  
volta 🙂 ) :

…  
def show  
@contatti = Contatti.find(params[:id])  
respond\_to do |format|  
format.html # show.html.erb  
format.xml { render :xml =\> @contatti }  
end  
…  
def prossimo  
@contatti = Contatti.find(params[:id])  
@contatti.update\_attributes(params[:contatti])  
@telefonate = Telefonate.new(params[:telefonate])  
@telefonate.save  
end

Nella view show.html.erb c’Ã¨:

…  
\<% form\_tag :action =\> ‘prossimo’ do %\>

**Id operatore:**  
\<%= text\_field 'telefonate', 'user\_id' %\>

**Note:**  
\<%= text\_field 'telefonate', 'note' %\>

\<%= submit\_tag “Prossimo” %\>  
\<% end %\>

…

Non riesco a capire perchÃ© mi ritorni “Couldn’t find Contatti without an  
ID”

se su “prossimo” c’Ã¨ “@contatti = Contatti.find(params[:id])”,  
“@contatti.update\_attributes(params[:contatti])” non dovrebbe prendersi  
l’id del contatto attualmente visualizzato, tirare dala view quello che  
lo riguarda e aggiornare i dati?

E’ meglio che faccia un controller apposito staccato, piuttosto che  
lavorare dentro le cose dei contatti?

Grazie in anticipo

---

<div class="post-metadata">

**Author:** ![daneel\_olivaw](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/58f4c7/32.png) [@daneel\_olivaw](https://www.ruby-forum.com/u/daneel_olivaw)\
**Post date:** [January 26, 2009, 4:11pm UTC](https://www.ruby-forum.com/t/ror-2-consiglio-su-come-aggiornare-un-dato/158662/2 "2009-01-26T16:11:49Z")

</div>

2009/1/26 Daneel O. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid):

> \<% form\_tag :action =\> ‘prossimo’ do %\>  
> …  
> Non riesco a capire perché mi ritorni “Couldn’t find Contatti without an  
> ID”
> 
> se su “prossimo” c’è “@contatti = Contatti.find(params[:id])”,  
> “@contatti.update\_attributes(params[:contatti])” non dovrebbe prendersi  
> l’id del contatto attualmente visualizzato, tirare dala view quello che  
> lo riguarda e aggiornare i dati?

l’errore significa che params[:id] non contiene l’id che ti serve,  
direi perche’ nella generazione dell’url manca la specifica dell’id (e  
stai usando le route “predefinite” di rails), se ho capito il tuo  
codice questo dovrebbe andare bene:

\<% form\_tag :action =\> ‘prossimo’, :id=\>@contatti.id do %\>

ciao,  
Luca

---

<div class="post-metadata">

**Author:** ![daneel\_olivaw](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/58f4c7/32.png) [@daneel\_olivaw](https://www.ruby-forum.com/u/daneel_olivaw)\
**Post date:** [January 26, 2009, 4:22pm UTC](https://www.ruby-forum.com/t/ror-2-consiglio-su-come-aggiornare-un-dato/158662/3 "2009-01-26T16:22:28Z")

</div>

Luca M. wrote:

> l’errore significa che params[:id] non contiene l’id che ti serve,  
> direi perche’ nella generazione dell’url manca la specifica dell’id (e  
> stai usando le route “predefinite” di rails), se ho capito il tuo  
> codice questo dovrebbe andare bene:
> 
> \<% form\_tag :action =\> ‘prossimo’, :id=\>@contatti.id do %\>

Confermo, funziona, grazie mille 😃
