2013-11-04 14 views
8

Ho un campo di tipo date nel mio database.Formattazione di un inserimento data con simple_form

Ecco il codice della vista che sto utilizzando:

# Using 'as: :string' to avoid those three dropdowns rails generates. 
= f.input_field :start_date, as: :string, class: 'form-control datepicker' 

Quando si salva una data io uso un plugin jQuery che mostra un calendario e scrive in una data come: 11/05/2013.

Ma quando si modifica lo stesso record, l'input viene popolato con un valore 2013-05-11.

Come posso renderlo così semplice_form rispetta effettivamente il mio formato data definito in en.yml?

risposta

29

Ecco quello che vi serve:

f.input :my_date, 
     :as => :string, 
     :input_html => { :value => localize(f.object.my_date) } 

PS: Questo è stato il primo anello google search :)

+3

quale termine di ricerca – callum

+3

È anche utile sapere che è possibile specificare il formato per la funzione di localizzazione, ad es. 'localize (f.object.my_date, format:: short)' – jmarceli

+0

Puoi anche fornire formati come: 'localize (f.object.my_date, format:"% -m /% d /% Y ")' – dinjas

9

ho creato questa classe che lo rende facile per fare questo:

f.input :my_date, :as => :date_picker 

Aggiungi questa classe alla cartella lib/e assicurati di includerla (o configurarla per il caricamento automatico):

class DatePickerInput < SimpleForm::Inputs::StringInput 
    def input 
    value = @builder.object.send(attribute_name) 
    input_html_options[:value] = case value 
            when Date, Time, DateTime 
            format = options[:format] || :medium 
            value.to_s(format) 
            else 
            value.to_s 
           end 

    input_html_options[:class] ||= [] 
    input_html_options[:class] << "date_picker_input" 
    @builder.text_field(attribute_name, input_html_options) 
    end 
end