2013-11-04 16 views
8

Ich habe ein date Typ Feld in meiner Datenbank.Formatieren einer Datumseingabe mit simple_form

Hier ist der Ansicht Code Ich verwende:

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

Wenn ein Datum Speichern ich ein jQuery-Plugin verwenden, die einen Kalender zeigt und schreibt in einem Datum wie: 11/05/2013.

Wenn Sie jedoch denselben Datensatz bearbeiten, wird die Eingabe mit einem Wert 2013-05-11 gefüllt.

Wie kann ich es machen so Simple_form tatsächlich respektiert mein Datumsformat definiert in en.yml?

Antwort

29

Hier ist, was Sie brauchen:

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

PS: Dies ist das erste Glied in google search war :)

+3

Welcher Suchbegriff – callum

+3

Es ist auch wissenswert, dass Sie Format für Lokalisierungsfunktion angeben können, z. 'localize (f.object.my_date, format:: kurz)' – jmarceli

+0

Sie können auch Formate wie: 'localize (f.object.my_date, Format:"% -m /% d /% Y ")' – dinjas

9

Ich habe diese Klasse, die es einfach tun dies macht:

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

Fügen Sie diese Klasse zu Ihrem lib/Ordner hinzu und stellen Sie sicher, dass Sie diese Klasse einschließen (oder für die automatische Ladeoperation konfigurieren):

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