# Ancora AJAX e form raccolta dati

**URL:** <https://www.ruby-forum.com/t/ancora-ajax-e-form-raccolta-dati/225942>\
**Category:** IT\
**Created:** [March 8, 2007, 5:29pm UTC](https://www.ruby-forum.com/t/ancora-ajax-e-form-raccolta-dati/225942 "2007-03-08T17:29:34Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![carminem](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/c/90db22/32.png) [@carminem](https://www.ruby-forum.com/u/carminem)\
**Post date:** [March 8, 2007, 5:29pm UTC](https://www.ruby-forum.com/t/ancora-ajax-e-form-raccolta-dati/225942/1 "2007-03-08T17:29:34Z")

</div>

Salve a tutti,

Riprendo, in parte, un argomento per cui ho giÃ chiesto lumi qualche  
giorno fa.

Inizio esponendo quella che Ã¨ la mia necessitÃ ed, in un secondo  
momento, illustrerÃ²  
la strada da me seguita e che, sebbene abbia prodotto qualcosa  
all’apparenza soddisfacente,  
mi lascia con qualche (magari 🙂 ) perplessitÃ .

Ho un form nel quale raccolgo alcuni dati:

- Nr badge
- accompagnatore
- tipo documento
- nr documento
- inizio
- fine
- nr abbinati
- titolare
- costo (default 0.0)

Ad eccezione di “fine”, sono tutti campi obbligatori.

Il flusso di lavoro Ã¨ il seguente:

1. Viene chiesto il nr badge  
1.1 se non esistono movimenti con “fine is null” abbinati al badge,  
viene creata una  
nuova istanza del modello “Trace” (quello preposto alla gestione dei  
dati di cui sopra)

1.2 se esiste un movimento con “fine is null” abbinati al badge, viene  
recuperato il record e  
ricreata l’istanza che lo ha generato.

2 Viene mostrato il form per la raccolta degli altri dati

2.1 Se l’unico campo da compilare rimasto Ã¨ “fine”, alla conferma  
(submit) viene calcolato  
il costo della transazione, e viene offerta la possibilitÃ  
all’utente di, evnetualmente,  
variare il costo proposto.

Nel form per la raccolta dei dati, ad un certo punto, viene mostrato un  
elenco dei possibili  
titolari della transazione.  
Selezionando il titolare, l’elenco viene sostituito con un riquadro che  
fornisce un dettaglio  
delle informazioni per il titolare selezionato.

Dove nasce il problema?

Una sola parola: AJAX.  
Nello specifico, relativamente alla selezione del titolare della  
transazione.

Quello a cui sono pervenuto ha soddisfatto tutti i requisiti, eccezion  
fatta per la possibilitÃ  
di variare il costo proposto per la transazione.

Il codice dell’action Ã¨ il seguente, ed Ã¨ il motivo delle mie  
perplessitÃ :

def ingresso\_uscita  
if request.xhr?  
if !params[:badge].blank?  
@trace = Trace.find\_by\_badge(params[:badge], :conditions =\> [‘fine  
is null’])  
if @trace.nil?  
# Nuovo ingresso  
@trace = Trace.new  
@trace.badge = params[:badge]  
@trace.inizio = Time.now  
@trace.fine = nil  
@trace.feriale = false  
@trace.client\_id = nil  
@clienti = Client.find\_by\_sql(‘select \* from clients where id  
not in (select client\_id from traces where fine is null)’)  
session[:traccia] = @trace  
else  
# Definiamo l’uscita  
@trace.fine = Time.now  
@trace.save!  
@cliente = Client.find(@trace.client\_id)  
session[:traccia] = @trace  
end  
else  
# Abbiamo giÃ cominciato ad inserire i dati  
old = session[:traccia]  
if params[:trace].blank?  
@trace = old  
else  
@trace = Trace.new(params[:trace])  
@trace.badge = old.badge  
@trace.inizio = old.inizio  
@trace.fine = old.fine  
if params[:id].blank?  
@trace.client\_id = old.client\_id  
else  
@trace.client\_id = params[:id]  
end  
if !@trace.client\_id.nil?  
@cliente = Client.find(@trace.client\_id)  
@trace.nr\_abbinati = 1 if @trace.nr\_abbinati \< 1  
end  
end  
session[:traccia] = @trace  
end  
end  
if @trace  
begin  
@trace.save! if @trace.valid?  
parziale = !@trace.fine.nil? ? ‘transazione\_confermata’ :  
‘form\_ingressouscita’  
rescue Exception =\> e  
@parametri = params  
parziale = ‘errore’  
raise e  
end

```
render :update do |page|
  page.replace_html 'ingresso_uscita_form', :partial => parziale
end

```

end  
end

Come potete vedere, Ã¨ un Ces… pÃ² incasinato.  
E’ vero che si tratta di una prima stesura perÃ².

A questo punto, avete qualche suggerimento da darmi? (no, l’ippica no  
please 🙂 )

Ringrazio in anticipo per il Vs aiuto

---

<div class="post-metadata">

**Author:** ![carminem](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/c/90db22/32.png) [@carminem](https://www.ruby-forum.com/u/carminem)\
**Post date:** [March 8, 2007, 6:03pm UTC](https://www.ruby-forum.com/t/ancora-ajax-e-form-raccolta-dati/225942/2 "2007-03-08T18:03:34Z")

</div>

non ho proprio capito qual’Ã¨ il tuo problema, cioÃ¨ fai tutto il flusso  
poi  
selezioni il titolare e quindi cos’Ã¨ che non riesci a fare in ajax? o  
cosa  
vorresti fare?

Andrea

----- Original Message -----  
From: “Carmine M.” [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)  
To: [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)  
Sent: Thursday, March 08, 2007 5:29 PM  
Subject: [ruby-it] Ancora AJAX e form raccolta dati

> variare il costo proposto.  
> Una sola parola: AJAX.  
> def ingresso\_uscita  
> @trace.feriale = false  
> end  
> if params[:id].blank?  
> end  
> end  
> A questo punto, avete qualche suggerimento da darmi? (no, l’ippica no  
> please 🙂 )
> 
> Ringrazio in anticipo per il Vs aiuto
> 
> –  
> Posted via [http://www.ruby-forum.com/](http://www.ruby-forum.com/).

* * *

---

<div class="post-metadata">

**Author:** ![carminem](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/c/90db22/32.png) [@carminem](https://www.ruby-forum.com/u/carminem)\
**Post date:** [March 9, 2007, 1:51am UTC](https://www.ruby-forum.com/t/ancora-ajax-e-form-raccolta-dati/225942/3 "2007-03-09T01:51:40Z")

</div>

mmm guarda se Ã¨ per lo stile non ti posso esser molto di aiuto, su ajax  
posso darti una mano ma sullo stile del metodo posso farci ben poco, se  
hai  
un problema particolare fammi sapere.

Saluti Andrea

----- Original Message -----  
From: “Carmine M.” [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)  
To: [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)  
Sent: Thursday, March 08, 2007 8:46 PM  
Subject: [ruby-it] Re: Ancora AJAX e form raccolta dati

> > cosa
> 
> Il tutto dovrebbe poggiare su AJAX, in vero piÃ¹ per necessitÃ di  
> “studio” che reali.
> 
> Spero di essere stato piÃ¹ chiaro stavolta.
> 
> –  
> Posted via [http://www.ruby-forum.com/](http://www.ruby-forum.com/).

* * *

---

<div class="post-metadata">

**Author:** ![carminem](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/c/90db22/32.png) [@carminem](https://www.ruby-forum.com/u/carminem)\
**Post date:** [March 8, 2007, 8:46pm UTC](https://www.ruby-forum.com/t/ancora-ajax-e-form-raccolta-dati/225942/4 "2007-03-08T20:46:07Z")

</div>

stb wrote:

> non ho proprio capito qual’Ã¨ il tuo problema, cioÃ¨ fai tutto il flusso  
> poi

Beh, il problema Ã¨ il codice che ne Ã¨ uscito fuori. Non mi piace, mi  
pare troppo confuso e macchinoso.  
Mi piacerebbe, alla luce delle mie necessitÃ , sapere in che modo Voi  
avreste implementato la cosa.

> selezioni il titolare e quindi cos’Ã¨ che non riesci a fare in ajax? o  
> cosa  
> vorresti fare?

Quel che vorrei fare, in breve, Ã¨ realizzare il form (di cui al  
messaggio precedente) per l’accettazione  
dei dati.

Il completamento delle informazioni avviene in 2 tempi.

1. Tutti i dati tranne il campo “fine”.
2. Il campo “fine” + possibilitÃ di variare il costo suggerito per la  
transazione.

Il tutto dovrebbe poggiare su AJAX, in vero piÃ¹ per necessitÃ di  
“studio” che reali.

Spero di essere stato piÃ¹ chiaro stavolta.

---

<div class="post-metadata">

**Author:** ![carminem](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/c/90db22/32.png) [@carminem](https://www.ruby-forum.com/u/carminem)\
**Post date:** [March 9, 2007, 7:18am UTC](https://www.ruby-forum.com/t/ancora-ajax-e-form-raccolta-dati/225942/5 "2007-03-09T07:18:13Z")

</div>

Ciao Andrea,

Grazie 1000 per la tua disponibilitÃ !

stb wrote:

> mmm guarda se Ã¨ per lo stile non ti posso esser molto di aiuto, su ajax  
> posso darti una mano ma sullo stile del metodo posso farci ben poco, se

Eeeeeh esagerato! E’ brutto ma mica irrimediabile 😉 (stÃ² scherzando  
eh!)

> hai  
> un problema particolare fammi sapere.

Approfitto subito allora. 🙂

Ho avuto difficoltÃ con l’“in place editing” utilizzando un campo float.  
Ricerche su google mi hanno portato ad una pagina su [dev.rubyonrails.com](http://dev.rubyonrails.com)  
dove la cosa  
veniva segnalata come bug.  
Che tu sappia, c’Ã¨ giÃ un rimedio?

Io ho tamponato cosÃ¬:

def set\_trace\_costo  
@item = Trace.find(params[:id])  
@item.update\_attribute(:costo, params[:value])  
render :text =\> @item.costo.to\_s  
end

Ma vÃ bene perchÃ¨ ho un solo campo float da gestire.  
Nel caso di n-mila float che si fÃ ? Ho pensato a:

def campi\_float  
campi.each do |attributo|  
define\_method(“set\_oggetto\_#{attributo}”) do  
@item = Trace.find(params[:id])  
@item.update\_attribute(:costo, params[:value])  
render :text =\> @item.costo.to\_s  
end  
end  
end

Mi fermo qui per non assillarti troppo 🙂

Grazie ancora
