ROR 2: consiglio su come aggiornare un dato


#1

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 :slight_smile: ) :


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


#2

2009/1/26 Daneel O. 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


#3

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 :smiley: