trovato la soluzione con l'aiuto di @Althaf
Aggiunto attributi virtuali per model.rb Utilizzato before_save
callback per la conversione di nuovo a datetime.
before_save :convert_to_datetime
def sched_date_field
sched_date.strftime("%d/%m/%Y") if sched_date.present?
end
def sched_time_field
sched_time.strftime("%I:%M%p") if sched_time.present?
end
def sched_date_field=(date)
# Change back to datetime friendly format
@sched_date_field = Date.parse(date).strftime("%Y-%m-%d")
end
def sched_time_field=(time)
# Change back to datetime friendly format
@sched_time_field = Time.parse(time).strftime("%H:%M:%S")
end
def convert_to_datetime
self.sched_time = DateTime.parse("#{@sched_date_field} #{@sched_time_field}")
end
utilizzare le rotaie 4, necessaria per aggiungere sched_date_field e sched_time_field le severe params in controller.rb
Qui ci sono i campi in _form.html.erb
<%= f.label :sched_date_field, "Scheduled Date" %>
<%= f.text_field :sched_date_field, :class => "datepicker" %>
<%= f.label :sched_time_field, "Scheduled Time" %>
<%= f.text_field :sched_time_field, :class => "timepicker" %>
Con parametri rigorosi, intendi "parametri forti"? Inoltre, questo codice sembra sollevare un errore variabile non definito su sched_time. –
Questo è un caso marginale, ma se si utilizza questa tecnica e si richiede qualsiasi convalida nel campo 'sched_time', fallirà. Puoi provare a cambiare 'before_save' con' before_validation'. Ma ancora, questo può fallire se si hanno convalide a cascata. Un po 'difficile da spiegare in questo breve commento, ma credimi, fallirà. – Karl
@ Karl cosa consiglia invece? Sto incontrando questo problema ..Sto pensando di cambiare il mio modello di dati per memorizzare data, ora e fuso orario come 3 campi separati. – Turgs