SimpleForm默认输入类

时间:2013-02-20 04:22:47

标签: ruby-on-rails-3 simple-form

我正在使用SimpleForm + Bootstrap。如何使用class = type="text"

为所有span12输入添加属性

输出类似内容的东西:

<div class="controls"><input autofocus="autofocus" class="string required span12" id="user_first_name" name="user[first_name]" required="required" size="50" type="text" value=""></div>

我尝试使用config.wrappers,但是这个

ba.use :input,  :wrap_with => { :class => 'span12' }

不起作用。它添加到包装器而不是修改输入标签。有什么想法吗?

SimpleForm.setup do |config|
  config.wrappers :bootstrap, :tag => 'div', :class => 'control-group', :error_class => 'error' do |b|
    b.use :html5
    b.use :placeholder
    b.use :label
    b.wrapper :tag => 'div', :class => 'controls' do |ba|
      ba.use :input
      ba.use :error, :wrap_with => { :tag => 'span', :class => 'help-inline' }
      ba.use :hint,  :wrap_with => { :tag => 'p', :class => 'help-block' }
    end
  end
  config.default_wrapper = :bootstrap
end

2 个答案:

答案 0 :(得分:4)

我有一个类似的问题,经过一些研究后我发现使用包装api不支持。

  

您可以做的最好是在每个表单中使用:defaults选项,而不是为每个输入添加。

https://github.com/plataformatec/simple_form/issues/754

你可以这样做:simple_form_for(@my_instance, defaults: { input_html: { class: 'span12' }})

您也可以选择使用自定义formbuilder。 https://github.com/plataformatec/simple_form#custom-form-builder

答案 1 :(得分:4)

您可以通过将string_input.rb类文件添加到rails加载路径(即app / inputs / string_input.rb)来简单地覆盖字符串输入的simple_form默认值,并包含如下:

class StringInput < SimpleForm::Inputs::StringInput
  def input_html_classes
    super.push('span12')
  end
end

如果您需要向其他类型的输入添加更多默认类,您可以查看提供的各种输入类型:

https://github.com/plataformatec/simple_form/tree/master/lib/simple_form/inputs