# Assegnazione valore da select

**URL:** <https://www.ruby-forum.com/t/assegnazione-valore-da-select/73617>\
**Category:** IT\
**Created:** [October 25, 2006, 7:06pm UTC](https://www.ruby-forum.com/t/assegnazione-valore-da-select/73617 "2006-10-25T19:06:03Z")\
**Posts on this page:** 7\
**Page:** 1

<div class="post-metadata">

**Author:** ![BSMaffettone](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/b/e68b1a/32.png) [@BSMaffettone](https://www.ruby-forum.com/u/BSMaffettone)\
**Post date:** [October 25, 2006, 7:06pm UTC](https://www.ruby-forum.com/t/assegnazione-valore-da-select/73617/1 "2006-10-25T19:06:03Z")

</div>

Ciao a tutti

Ho questa tabella  
CREATE TABLE SERVICES (  
ID INTEGER NOT NULL,  
NOME VARCHAR (35) ,  
CODICE CHAR (7) ,  
IMPORTO DECIMAL (6, 2),  
NUMERO SMALLINT);

E questa \_form relativa ad un’altra tabella PRESCRIPTION  
che ha un campo service\_id e un campo numero\_terapie che al momento  
Ã¨ immesso dall’utente.  
…  
Prestazione:  
\<%=  
@services = Service.find(:all, :order =\> “nome”)  
collection\_select(“prescription”, “service\_id”, @services, :id, :nome)  
%\>  
\<% @prescription.numero\_terapie = @prescription.service\_id %\>  
Numero terapie  
\<%= text\_field ‘prescription’, ‘numero\_terapie’ %\>  
…  
Partendo dal service\_id selezionato come posso riempire il campo  
numero\_terapie  
con il corrispondente valore service.numero lasciando comunque la  
possibilitÃ all’utente di modificarlo?

La soluzione sarÃ forse banale ma io non ne vengo a capo.  
Sperando di essere stato chiaro  
in attesa … Grazie

---

<div class="post-metadata">

**Author:** ![BSMaffettone](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/b/e68b1a/32.png) [@BSMaffettone](https://www.ruby-forum.com/u/BSMaffettone)\
**Post date:** [October 26, 2006, 3:21pm UTC](https://www.ruby-forum.com/t/assegnazione-valore-da-select/73617/2 "2006-10-26T15:21:19Z")

</div>

nel tuo form metti un observer sulla select

\<%= observe\_field “prescription\_service\_id” ,:url =\> { :action =\>  
“find\_terapie” }, :with =\> “service\_id” %\>

e, nel controller, un’azione per recuperare il valore e valorizzare il  
campo

def find\_terapie  
service=Service.find(params[:service\_id])  
render :update do |page|  
page[:prescription\_service\_id].value=service.numero  
end  
end

Ricordati di includere i javascript necessari (\<%=  
javascript\_include\_tag :defaults %\>)

ciao  
Simo

B. Maffettone wrote:

> Ciao a tutti
> 
> Ho questa tabella  
> …  
> Partendo dal service\_id selezionato come posso riempire il campo  
> numero\_terapie  
> con il corrispondente valore service.numero lasciando comunque la  
> possibilitÃ all’utente di modificarlo?  
> …

---

<div class="post-metadata">

**Author:** ![BSMaffettone](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/b/e68b1a/32.png) [@BSMaffettone](https://www.ruby-forum.com/u/BSMaffettone)\
**Post date:** [October 26, 2006, 3:23pm UTC](https://www.ruby-forum.com/t/assegnazione-valore-da-select/73617/3 "2006-10-26T15:23:53Z")

</div>

Sorry, prima svista; ovviamente nel controller devi mettere:  
page[:prescription\_snumero\_terapie].value=service.numero

Simo - Addsw wrote:

> nel tuo form metti un observer sulla select
> 
> \<%= observe\_field “prescription\_service\_id” ,:url =\> { :action =\>  
> “find\_terapie” }, :with =\> “service\_id” %\>
> 
> e, nel controller, un’azione per recuperare il valore e valorizzare il  
> campo
> 
> def find\_terapie  
> service=Service.find(params[:service\_id])  
> render :update do |page|  
> page[:prescription\_service\_id].value=service.numero  
> end  
> end
> 
> Ricordati di includere i javascript necessari (\<%=  
> javascript\_include\_tag :defaults %\>)
> 
> ciao  
> Simo

---

<div class="post-metadata">

**Author:** ![BSMaffettone](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/b/e68b1a/32.png) [@BSMaffettone](https://www.ruby-forum.com/u/BSMaffettone)\
**Post date:** [October 26, 2006, 6:49pm UTC](https://www.ruby-forum.com/t/assegnazione-valore-da-select/73617/4 "2006-10-26T18:49:24Z")

</div>

Ricevuto.  
Grazie tante !!! ora mi documento su

> nel tuo form metti un observer sulla select

provo a fare come hai detto e ti faccio sapere.

Ancora grazie  
Ciao  
BM

---

<div class="post-metadata">

**Author:** ![BSMaffettone](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/b/e68b1a/32.png) [@BSMaffettone](https://www.ruby-forum.com/u/BSMaffettone)\
**Post date:** [October 26, 2006, 7:41pm UTC](https://www.ruby-forum.com/t/assegnazione-valore-da-select/73617/5 "2006-10-26T19:41:26Z")

</div>

Per la fretta di provare non mi sono documentato granchÃ¨, ma sembra che  
l’azione  
find\_terapie non venga chiamata.Comunque:  
in \_form.rhtml ho messo  
…

Prestazione:

\<%= observe\_field “prescription\_service\_id” ,:url =\> { :action =\>

> “find\_terapie” }, :with =\> “service\_id” %\>

* * *

ho provato anche “prescription[service\_id]”

* * *

\<%=  
@services = Service.find(:all, :order =\> “nome” ).map {|u|  
[u.nome+’–\> '+u.numero.to\_s, u.id] }  
select(:prescription, :service\_id, @services)  
%\>

\*\*\*\*\*quando funzionerÃ come valorizzo questo sotto ?

Numero terapie \<%= text\_field 'prescription', 'numero\_terapie' %\> ................ \*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\* in new.rhtml \<%= javascript\_include\_tag :defaults %\> 
#### Nuova ricetta

\<%= start\_form\_tag :action =\> ‘create’ %\>  
\<%= render :partial =\> ‘form’ %\>  
\<%= submit\_tag “Registra” %\>  
\<%= end\_form\_tag %\>

\<%= link\_to ‘Indietro’, :action =\> ‘list’ %\>

* * *

in prescription\_controller  
def find\_terapie  
service=Service.find(params[:service\_id])  
render :update do |page|  
page[:prescription\_numero\_terapie].value=service.numero  
end  
end

Sicuramente sbaglio! ma dove? se puoi dirmelo!?  
Scusa se approfitto del tuo tempo  
BM

---

<div class="post-metadata">

**Author:** ![BSMaffettone](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/b/e68b1a/32.png) [@BSMaffettone](https://www.ruby-forum.com/u/BSMaffettone)\
**Post date:** [October 26, 2006, 7:55pm UTC](https://www.ruby-forum.com/t/assegnazione-valore-da-select/73617/6 "2006-10-26T19:55:50Z")

</div>

> \*\*\*\*\*quando funzionerÃ come valorizzo questo sotto ?  
> Mi rispondo da solo  
> con  
> page[:prescription\_numero\_terapie].value=service.numero  
> Esatto ?

In public/javascripts devo avere defaults ?

Ciao

---

<div class="post-metadata">

**Author:** ![BSMaffettone](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/b/e68b1a/32.png) [@BSMaffettone](https://www.ruby-forum.com/u/BSMaffettone)\
**Post date:** [October 27, 2006, 7:53am UTC](https://www.ruby-forum.com/t/assegnazione-valore-da-select/73617/7 "2006-10-27T07:53:36Z")

</div>

Simo - Addsw wrote:

> nel tuo form metti un observer sulla select

Ho riscritto questo:

Prestazione: \<%= collection\_select("prescription", "service\_id", @services, :id, :nome) %\>

\<%= observe\_field “prescription\_service\_id” ,:url =\> { :action =\>  
“find\_terapie” }, :with =\> “service\_id” %\>

variando  
select(:prescription, :service\_id, @services)

e adesso funziona, non so se il problema era tra select e  
collection\_select ma  
per ora mi basta che funzioni dopo indagherÃ².  
Ti ringrazio dell’aiuto.  
Spero in futuro di potermi disobbligare fornendo aiuto a mia volta a  
qualcuno.  
Per ora per quanto riguarda Ruby e Rails sono all’etÃ del bronzo  
(pietra?)  
col tempo … forse …  
Ciao
