Con: input_html funziona. È un po 'goffo.
= f.input :email, :input_html => { :class => 'foo' }
È anche possibile impostare tutti gli ingressi su tutti gli elementi del modulo:
simple_form_for(@user, :defaults => { :input_html => { :class => "foo" } })
Ma come ci si aspetta, questo vale per tutto.
È possibile creare elementi del modulo personalizzati:
# app/inputs/foo_input.rb
class FooInput < SimpleForm::Inputs::StringInput
def input_html_classes
super.push('foo')
end
end
// in your view:
= f.input :email, :as => :foo
See: https://github.com/plataformatec/simple_form/wiki/Adding-custom-input-components
È anche possibile creare un generatore di modulo personalizzato:
def custom_form_for(object, *args, &block)
options = args.extract_options!
simple_form_for(object, *(args << options.merge(builder: CustomFormBuilder)), &block)
end
class CustomFormBuilder < SimpleForm::FormBuilder
def input(attribute_name, options = {}, &block)
options[:input_html].merge! class: 'foo'
super
end
end
quindi vuoi avere "testo" di classe sui tuoi input o sul wrapper? –
input, voglio e non voglio che questo venga eseguito in linea come in <% = f.input: due_attacchi, input_html: {classe: 'testo'}%> –