# Non riesco a salvare un campo nel db

**URL:** <https://www.ruby-forum.com/t/non-riesco-a-salvare-un-campo-nel-db/218864>\
**Category:** IT\
**Created:** [April 13, 2012, 8:45pm UTC](https://www.ruby-forum.com/t/non-riesco-a-salvare-un-campo-nel-db/218864 "2012-04-13T20:45:25Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![dubstep](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/cdc98d/32.png) [@dubstep](https://www.ruby-forum.com/u/dubstep)\
**Post date:** [April 13, 2012, 8:45pm UTC](https://www.ruby-forum.com/t/non-riesco-a-salvare-un-campo-nel-db/218864/1 "2012-04-13T20:45:25Z")

</div>

Salve,

e’ da un po’ che mi cimento con rails e finche’ segui esempi ed esercizi  
sembra di aver capito tutto bene fino a che non ti imbatti in qualcosa  
di apparentemente semplice da risolvere non presente negli esercizi che  
hai fatto ma che in rails con una nuova logica risulta qualcosa di  
impossibile da risolvere

beh veniamo al problema

ho un form con form\_for

per la registrazione di un utent @utente form ho un menu dynamico scelta  
la provincia mi da i comuni relativi alla provincia

\<%= form\_for @utente do |f| %\>

\<%= f.label :provincia\_id %\>  
\<%= f.collection\_select :provincia\_id, Provincia.order(:nome), :id,  
:nome,  
{:prompt =\> true} %\>

\<%= f.label :comune\_id %\>  
\<%= f.grouped\_collection\_select :comune\_id, Provincia.order(:nome),  
:comune,  
:nome, :id, :nome, {:prompt =\> true} %\>

\<% end %\>

il file delle migration mi da

create\_table “comune”, :force =\> true do |t|  
t.string “nome”  
t.integer “provincia\_id”  
t.datetime “created\_at”  
t.datetime “updated\_at”  
end

create\_table “provincia”, :force =\> true do |t|  
t.string “nome”  
t.datetime “created\_at”  
t.datetime “updated\_at”  
end

create\_table “utente”, :force =\> true do |t|  
t.string “provincia”  
t.string “comune”  
t.integer “provincia\_id”  
t.integer “comune\_id”  
t.datetime “created\_at”  
t.datetime “updated\_at”  
end

quando schiaccio il pulsante submit mi registra nella a tabella  
‘utentes’ ID Provincia e lo ID  
Comune e non il nome della Provincia e quello del Comune

Io ho 3 modelli

@utente, @provincia, @comune

class Provincia  
has\_many :comune  
end

class Comune  
belongs\_to :provincia  
end

e nel model @utente ho:

belongs\_to :provincia, :class\_name =\> “Provincia”, :foreign\_key =\>  
“provincia\_id”  
belongs\_to :comune, :class\_name =\> “Comune”, :foreign\_key =\>  
“comune\_id”

PRIMA DI CONTINUARE LEGGI LA NOTA SEGUENTE

////////////////  
NOTA: certo se scrivo le 2 righe di codice nel modello @utente pensavo  
di scrivere

class Provincia  
has\_many :utentes  
end

class Comune  
has\_many :utentes  
end

ma seguendo questa logica ottengo un errore quando carico il modulo del  
tipo

‘comune’ method non definito relativo alla seguente riga

\<%= f.grouped\_collection\_select :comune\_id, Provincia.order(:nome),  
:comune,  
:nome, :id, :nome, {:prompt =\> true} %\>

per tale ragione questa modifica logica nei modelli Provincia e Comune  
non l’ho lasciata utilizzando il codice precedente il modulo carica  
perfettamente

/////////////////

nella pagina di conferma del modulo ho quanto segue

\<%= f.hidden\_field(:utente, :provincia, :value =\>  
@utente.provincia.nome) %\>  
\<%= f.hidden\_field(:utente, :comune, :value =\> @utente.comune.nome) %\>

in pratica registro in 2 campi nascosti i valori corrispondenti a  
provincia\_id e comune\_id del campo nome nelle rispettive tabelle  
provincia e comune

\<%= h @utente.provincia.nome %\>  
\<%= h @utente.comune.nome %\>

e vedo correttamente nel sorgente della pagina

**Provincia:** ANCONA

**Comune:** AGUGLIANO

dopo che schiaccio il pulsante submit ho registrato correttamente il  
record ma senza l;inserimento del nome della provincia “ANCONA”  
e del comune “AGUGLIANO” ma soltanto dei campi provincia\_id e comune\_id  
che sono degli interi gli altri rimangono vuoti

grazie in anticipo a chiunque abbia voglia di aiutarmi

C
