Salve,
Volevo sapere voi come gestireste un modello (diciamo ModelA ), in
relazione :has_many con
un altro modello (diciamo ModelB) , in modo da inserire con un unico
form tutti i dati per ModelA
e i dati per svariate copie di ModelB ?
per esempio hai due tabelle Country e City, ogni città ha un solo country
quindi nel modello userai belongs_to :country mentre ogni country può avere
più città e nel modello country metti has_many :city.
una volta fatto questo basta che scrivi una cosa del tipo
Country.find(:all,:include => [:city])
e ti ritroveray con un array do country ognuno contenente il suo array
di
oggetti city.
spero di esser stato abbastanza chiaro.
Andrea
----- Original Message -----
From: “Antonio B.” [email protected]
To: [email protected]
Sent: Friday, March 30, 2007 9:48 PM
Subject: [ruby-it] Rails e form da array di oggetti
Grazie per la risposta,
per quanto riguarda il modello cio’ che hai detto e’ chiaro, pero’ io
volevo sapere come gestire poi, seguendo il tuo esempio, un form di
inserimento di una Country che pero’ mi dia nello stesso form la
possibilita’ di inserire 10 City per esempio.
crei un oggetto country e N oggetti city, popoli i modelli e quando vai
a
salvare salvi prima il country(per recuperare l’ id da inserire nelle
city)
e poi salvi le city.
ora prova ad implementarlo così poi quando tutto funziona ti consiglio di
usare le transaction, praticamente esegue in blocco tutte le query al db
e
anche se solo una non va a buon fine annulla l’ operazione così se per
esempio non ti salva una city o il country non ti salva nemmeno gli
altri
record.
Saluti Andrea
----- Original Message -----
From: “Antonio B.” [email protected]
To: [email protected]
Sent: Saturday, March 31, 2007 1:28 AM
Subject: Re: [ruby-it] Rails e form da array di oggetti
<% fields_for 'city[]', @cities do |cf|
3.times do |index| %>
City: <%= cf.text_field :city_name, :index => index %>
<% end
end %>
<%= submit_tag "crea country e tre cities" %>
<% end %>
Nel controller fai params.inspect e guarda come tirare fuori i dati
passati.
Paolo