# Popup rails

**URL:** <https://www.ruby-forum.com/t/popup-rails/139371>\
**Category:** IT\
**Created:** [June 3, 2008, 10:23am UTC](https://www.ruby-forum.com/t/popup-rails/139371 "2008-06-03T10:23:41Z")\
**Posts on this page:** 9\
**Page:** 1

<div class="post-metadata">

**Author:** ![catiana](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/c/8e7dd6/32.png) [@catiana](https://www.ruby-forum.com/u/catiana)\
**Post date:** [June 3, 2008, 10:23am UTC](https://www.ruby-forum.com/t/popup-rails/139371/1 "2008-06-03T10:23:41Z")

</div>

Ciao a tutti,  
avrei bisogno di un piccolo aiutino se possibile(sono una principiante  
con Rails);  
nella mia applicazione, quando un utente clicca un link\_to dovrei  
mostrare una form in una finestra di popup.  
Tale popup si deve chiudere quando invio i dati della form.  
Qualcuno sa darmi qualche dritta?  
Se non utilizzo la finestra di popup come potrei risolvere il problema  
della perdita dei dati giÃ inseriti in una form quando passo ad  
un’altra?

Grazie mille a tutti anticipatamente.

---

<div class="post-metadata">

**Author:** ![catiana](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/c/8e7dd6/32.png) [@catiana](https://www.ruby-forum.com/u/catiana)\
**Post date:** [June 3, 2008, 10:30am UTC](https://www.ruby-forum.com/t/popup-rails/139371/2 "2008-06-03T10:30:00Z")

</div>

2008/6/3, Catiana T. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid):

> un’altra?  
> Se devi mantenere i dati da una pagina all’altra, hai l’oggetto params,  
> che  
> non è nient’altro che un array associativo contenente i dati provenienti  
> dal  
> form della pagina precedente.

Grazie mille a tutti anticipatamente.

---

<div class="post-metadata">

**Author:** ![catiana](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/c/8e7dd6/32.png) [@catiana](https://www.ruby-forum.com/u/catiana)\
**Post date:** [June 3, 2008, 11:41am UTC](https://www.ruby-forum.com/t/popup-rails/139371/3 "2008-06-03T11:41:02Z")

</div>

Il 03/06/08, Catiana T. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) ha scritto:

> \<%= submit\_tag 'Conferma' %\>
> 
> Io sto inserendo i dati di un nuovo passegero, voglio associare a questo  
> passeggero un veicolo(gia’ presente nel database); una volta effettuata  
> la ricerca voglio tornare alla form di inserimento passegero.  
> L’oggetto params[:passenger] comunque e’ nil, perche’ credo che si  
> riempia quando clicco sul tasto ‘Conferma’
> 
> Grazie mille.

quando invii il form, i parametri vengono inviati all’azione index del  
controller veichles, se tu in quell’azione hai un form come quello di  
adesso, dovresti avere i campi già compilati

–

---

<div class="post-metadata">

**Author:** ![catiana](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/c/8e7dd6/32.png) [@catiana](https://www.ruby-forum.com/u/catiana)\
**Post date:** [June 3, 2008, 11:33am UTC](https://www.ruby-forum.com/t/popup-rails/139371/4 "2008-06-03T11:33:57Z")

</div>

Grazie per il suggerimento, pero’ non funziona…forse sbaglio qualcosa.  
Ti spiego meglio il problema:

\<% form\_tag :action =\> “create” do %\>

Nome   
 \<%=text\_field :passenger, :name %\>

Cognome   
 \<%= text\_field :passenger, :surname %\>

... \<%= link\_to 'Search vehicle', {:action=\>"index", :controller=\>"vehicles"} %\>   
  
... \<%= submit\_tag 'Conferma' %\>

Io sto inserendo i dati di un nuovo passegero, voglio associare a questo  
passeggero un veicolo(gia’ presente nel database); una volta effettuata  
la ricerca voglio tornare alla form di inserimento passegero.  
L’oggetto params[:passenger] comunque e’ nil, perche’ credo che si  
riempia quando clicco sul tasto ‘Conferma’

Grazie mille.

---

<div class="post-metadata">

**Author:** ![catiana](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/c/8e7dd6/32.png) [@catiana](https://www.ruby-forum.com/u/catiana)\
**Post date:** [June 3, 2008, 11:55am UTC](https://www.ruby-forum.com/t/popup-rails/139371/5 "2008-06-03T11:55:02Z")

</div>

> quando invii il form, i parametri vengono inviati all’azione index del  
> controller veichles, se tu in quell’azione hai un form come quello di  
> adesso, dovresti avere i campi giï¿½ compilati
> 
> –

La form di ricerca del veicolo e’ la seguente:

# Search Vehicle

\<%= error\_messages\_for :vehicle %\>

\<% form\_tag :action=\>“search” do %\>

**Plate**  
 \<%= text\_field :vehicle,:plate, :limit=\> 10 %\>

\<%= submit\_tag "Search" %\>

\<% end %\>

Al click sul tasto Search io recupero l’id del veicolo cercato e dovrei  
inviarlo alla form di inserimento passeggero; per questo utilizzo  
l’oggetto session in questo modo:  
controllers/vehicles\_controller.rb  
def search  
@vehicle = Vehicle.find(:first,  
:conditions=\>[“plate=?”,params[:vehicle][:plate]])  
redirect\_to :action =\> “new”, :controller=\>“passengers”  
session[:id\_vehicle] = @vehicle.id  
end  
Ora tornando alla pagina di inserimento passengero perdo le informazioni  
precedentemente inserite, tipo il nome ed il cognome del passegero.  
Quando cerco il veicolo da associare al passegero io non ho ancora  
salvato i dati del mio nuovo passegero sul database, non quindi ancora  
cliccato il tasto Conferma.

Grazie per l’interessamento.  
Ciao ciao

---

<div class="post-metadata">

**Author:** ![catiana](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/c/8e7dd6/32.png) [@catiana](https://www.ruby-forum.com/u/catiana)\
**Post date:** [June 3, 2008, 12:02pm UTC](https://www.ruby-forum.com/t/popup-rails/139371/6 "2008-06-03T12:02:19Z")

</div>

Il 03/06/08, Catiana T. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) ha scritto:

> \<%= submit\_tag "Search" %\>
> 
> \<% end %\>

Mi sembra un pÃ² intricato come procedimento e forse non ho ben capito  
cosa  
vuoi fare, comunque in questo ultimo form hai accesso ai dati del  
precedente, ma se lo invii li perdi (ovviamente). Potresti salvarli  
dentro  
un hidden field se ti serve.

Al click sul tasto Search io recupero l’id del veicolo cercato e dovrei

---

<div class="post-metadata">

**Author:** ![catiana](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/c/8e7dd6/32.png) [@catiana](https://www.ruby-forum.com/u/catiana)\
**Post date:** [June 3, 2008, 12:48pm UTC](https://www.ruby-forum.com/t/popup-rails/139371/7 "2008-06-03T12:48:18Z")

</div>

Catiana T. wrote:

> def search  
> @vehicle = Vehicle.find(:first,  
> :conditions=\>[“plate=?”,params[:vehicle][:plate]])  
> redirect\_to :action =\> “new”, :controller=\>“passengers”  
> session[:id\_vehicle] = @vehicle.id  
> end

Quest’azione deve anche rileggere il passeggero e metterlo in @passenger  
perchÃ©  
le varie \<%=text\_field :passenger, :name %\> dell’altro form prendono i  
valori di default proprio da @passenger.

La somiglianza tra @passenger e l’argomento :passenger della text\_field  
non Ã¨ un caso. Cito la documentazione di Rails:

text\_field(:post, :title, :size =\> 20)

equivale a

Probabilmente dovrai passare l’id del passeggero alla search dei veicoli  
o memorizzare l’id nella session[] (suggerisco la prima opzione).

Ciao  
Paolo

---

<div class="post-metadata">

**Author:** ![catiana](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/c/8e7dd6/32.png) [@catiana](https://www.ruby-forum.com/u/catiana)\
**Post date:** [June 3, 2008, 6:30pm UTC](https://www.ruby-forum.com/t/popup-rails/139371/8 "2008-06-03T18:30:09Z")

</div>

Ma io farei scegliere il veicolo mentre si riempie il primo form e  
perchÃ¨ non fare qualcosa di figo in ajax??

> **[\#102 Auto-Complete Association - RailsCasts](http://railscasts.com/episodes/102-auto-complete-association)**
>
> Short Ruby on Rails screencasts containing tips, tricks and tutorials. Great for both novice and experienced web developers.

oppure, se la scelta non Ã¨ molto complessa, caricare una collection  
select:  
collection\_select(object, method, collection, value\_method, text\_method,  
options = {}, html\_options = {})

(guarda la documentazione per gli esempi [http://api.rubyonrails.com/](http://api.rubyonrails.com/))

---

<div class="post-metadata">

**Author:** ![catiana](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/c/8e7dd6/32.png) [@catiana](https://www.ruby-forum.com/u/catiana)\
**Post date:** [June 3, 2008, 6:37pm UTC](https://www.ruby-forum.com/t/popup-rails/139371/9 "2008-06-03T18:37:43Z")

</div>

Ecco cosa verrebbe nella vista (perÃ² non l’ho testata), eventualmente  
puoi filtrare la lista dei veicoli:

collection\_select :vehicle\_id, Vehicle.find(:all), :id, :plate
