Вы должны определить новый DatePickerInput
класс.
module SimpleForm
module Inputs
class DatePickerInput < Base
def input
@builder.text_field(attribute_name,input_html_options)
end
end
end
end
И теперь вы можете написать
<%= f.input :deadline, :as => :date_picker %>
Конечно, вам также нужно
$("input.date_picker").datepicker();
in application.js
Это очень полезно для локализации дат. Посмотрите на это:
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
Теперь у вас есть локализованная дата в текстовом поле!
Обновление: более чистый способ сделать то же самое
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
Унаследовать от SimpleForm::Inputs::StringInput
(как сказал @kikito) и добавить несколько опций html.
Если вам нужен также определенный класс, вы можете добавить что-то вроде
def input_html_classes
super.push('date_picker')
end