用于输入的简单表单Rails配置类

时间:2013-10-31 10:20:08

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

我们如何在Simpleform配置包装器中添加输入类?

我在下面试过,但似乎没有工作

config.wrappers :horizontal, tag: 'div', class: 'form-group', error_class: 'has-error' do |b|
    b.use :html5
    b.use :placeholder
    b.use :label
    b.wrapper tag: 'div', class: 'col-lg-8' do |ba|
      ba.use :input, my_wrapper_html: { class: 'form-control' }
      ba.use :hint,  wrap_with: { tag: 'p', class: 'help-block' }
      ba.use :error, wrap_with: { tag: 'span', class: 'help-inline text-danger' }
    end
  end

2 个答案:

答案 0 :(得分:0)

看起来这是为了实现bootstrap 3?

试试这个

config.wrappers :horizontal, tag: 'div', class: 'form-group', error_class: 'has-error', defaults: { input_html: { class: 'default_class' } }  do |b|
b.use :html5
b.use :min_max
b.use :maxlength
b.use :placeholder
b.optional :pattern
b.optional :readonly

  b.wrapper tag: 'div', class: 'controls' do |input|
    input.use :label, class: 'horizontal'
    input.wrapper tag: 'div' do |prepend|
     prepend.use :input, class: 'horizontal'
    end
    input.use :hint,  wrap_with: { tag: 'span', class: 'help-block' }
    input.use :error, wrap_with: { tag: 'span', class: 'help-block has-error' }
  end
end

取自Here

我还必须将THIS添加到配置文件中,以使输入正常工作。

答案 1 :(得分:0)

不幸的是,我不确定是否可以在包装器中添加任何类来输入。就我而言,b.use :input的DSL没有这样的选择。

您可以改为使用input_html选项:

= f.input :title, input_html: { class: 'my-input-class' }

此功能描述了here

对于大多数复杂情况,您可以在app/inputs目录下定义自己的输入类:

class MyInput < SimpleForm::Inputs::BooleanInput
  html_options = label_html_options.dup
  html_options[:class] ||= []
  html_options[:class].push('my-input-class')
  @builder.label(label_target, html_options) {
    build_check_box_without_hidden_field + template.tag(:span).html_safe
  }
end

比使用此输入:

= f.input :title, as: :my_input