Formtastic, собственный :as тип ввода

Как я могу добавить свои собственные типы полей в formtastic?

Например, мне нужно иметь собственный ввод даты и времени, и я хочу что-то вроде этого:

<%= f.input :start_date , :as => :my_date %>

Очевидно, это не работает, потому что formtastic не знает :my_date (только :boolean, :string, :datetime и т.д....)

Но как я могу добавить дополнительные типы ввода?


person astropanic    schedule 28.04.2010    source источник


Ответы (2)


Вам нужно добавить пользовательский метод ввода:

class MyCustomFormtasticFormBuilder < Formtastic::SemanticFormBuilder
  protected
  def my_date_input(method, options)
    basic_input_helper(:text_field, :my_date, method, options)
  end
end

Это идеально подходит, скажем, для новых типов ввода HTML5. Вы используете его так:

<% form_form @model, :builder => MyCustomFormtasticFormBuilder  do |f| %>
   <%= f.input :start_date, :as => :my_date
<% end %>
person James A. Rosen    schedule 28.04.2010
comment
Идеальный ответ. Мое единственное дополнение заключается в том, что вам затем нужно настроить Formtastic для использования MyCustomFormtasticFormBuilder вместо Formtastic::SemanticFormBuilder, что можно сделать в инициализаторе конфигурации, поставляемом с Formtastic. - person Justin French; 29.04.2010

Больше не создавать подклассы Formtastic::FormBuilder

Ранее в Formtastic 1.x было рекомендовано создать подкласс Formtastic::FormBuilder для добавления собственных входных данных. Это больше не рекомендуется в Formtastic 2 и не будет работать должным образом.

https://github.com/justinfrench/formtastic

http://justinfrench.com/notebook/formtastic-2-preview-custom-inputs

person Manuel Meurer    schedule 08.11.2011