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