Ciao a tutti,
ho iniziato da poco a creare una webapp in RoR per gestire il workflow
degli ordini di produzione che ho in azienda.
I cicli di produzione vengono caricati dall’utente A, quindi l’utente B
indica l’inizio e la fine delle lavorazioni.
Creo un modello “ciclo.rb” in cui gestisco, mediante scaffolding,
l’inserimento e modifica dei cicli di produzione da parte dell’utente A
(il controller è “ciclos_controller.rb”).
Per l’utente B, ho generato il controller “officina_controller.rb”, con
homepage “index”, in cui ho:
________
Ciclo no. : |_______| ( Pulsante: “INIZIA” )
la view è:
<% form_tag(:action => :inizia_odp) do %>
Ciclo no.: |
<%= text_field_tag :ciclo_officina, params[:ciclo_officina] %>
<%= submit_tag “Inizia” %>
|
<% end %>
l’utente B inserisce il numero del ciclo, il controller officina riporta
def inizia_odp
@ciclo = Ciclo.find(:first, :conditions => [“odp like ?”,
params[:ciclo_officina]])
@ciclo.iniziato = Date::today
end
quindi nel template “inizia_odp” vengono mostrati i campi del record
modificato (la data di inizio compare correttamente)
PROBLEMA: tornando alla home page contenente l’elenco di tutti i cicli
in produzione, la riga corrispondente al ciclo appena modificato riporta
il campo “data_inizio” vuota.
Sapete dirmi come faccio a modificare i record dello stasso modello da
due controller diversi?
grazie mille
Antonio
Mammaorsa Dj wrote:
def inizia_odp
@ciclo = Ciclo.find(:first, :conditions => [“odp like ?”,
params[:ciclo_officina]])
@ciclo.iniziato = Date::today
end
PROBLEMA: tornando alla home page contenente l’elenco di tutti i cicli
in produzione, la riga corrispondente al ciclo appena modificato riporta
il campo “data_inizio” vuota.
La soluzione è semplice: devi ricordarti di salvare il record
modificato, ad esempio con @ciclo.save
Nella view infatti vedi il record aggiornato perché hai modificato la
copia caricata in memoria (@ciclo), ma Rails non salva automaticamente
le modifiche che fai ai dati.
Sapete dirmi come faccio a modificare i record dello stasso modello da
due controller diversi?
Puoi lavorare su qualsiasi modello da qualsiasi controller, il quiproquo
era la mancanza della save.
Paolo
GRAZIE MILLE
Non riesco ancora a “pensare” come rails, le “magics” di cui tante guide
parlano in realtà hanno dei fondamenti nascosti, come questa di
visualizzare il record modificato nella mia view, che faccio ancora
fatica a mettermi in testa…
Grazie ancora
Antonio
On 2/8/09 6:15 PM, Paolo M. wrote:
in produzione, la riga corrispondente al ciclo appena modificato riporta
il campo “data_inizio” vuota.
La soluzione è semplice: devi ricordarti di salvare il record
modificato, ad esempio con @ciclo.save
Nella view infatti vedi il record aggiornato perché hai modificato la
copia caricata in memoria (@ciclo), ma Rails non salva automaticamente
le modifiche che fai ai dati.
Quando l’operazione è così semplice trovo molto comodo anche usare la
update_attribute(s):
@ciclo.update_attribute(:iniziato, Date.today)
Andrea