Vous devez définir un nouveau DatePickerInput
classe.
module SimpleForm
module Inputs
class DatePickerInput < Base
def input
@builder.text_field(attribute_name,input_html_options)
end
end
end
end
Et vous pouvez maintenant écrire
<%= f.input :deadline, :as => :date_picker %>
Bien sûr vous devez également
$("input.date_picker").datepicker();
en application.js
Ceci est très utile pour localiser les dates. Regardez ceci:
module SimpleForm
module Inputs
class DatePickerInput < Base
def input
@builder.text_field(attribute_name, input_html_options.merge(datepicker_options(object.send(attribute_name))))
end
def datepicker_options(value = nil)
datepicker_options = {:value => value.nil?? nil : I18n.localize(value)}
end
end
end
end
Vous avez maintenant une date localisés dans le champ de texte!
Mise à jour: une le moyen le plus propre à faire de même
module SimpleForm
module Inputs
class DatePickerInput < SimpleForm::Inputs::StringInput
def input_html_options
value = object.send(attribute_name)
options = {
value: value.nil?? nil : I18n.localize(value),
data: { behaviour: 'datepicker' } # for example
}
# add all html option you need...
super.merge options
end
end
end
end
Hériter d' SimpleForm::Inputs::StringInput
(comme @kikito dit), et d'ajouter certaines options html.
Si vous avez besoin également d'une classe spécifique, vous pouvez ajouter quelque chose comme
def input_html_classes
super.push('date_picker')
end