使用自定义包装器无法使用Simple表单

时间:2013-11-20 12:56:49

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

我正在尝试为Simple Form创建自定义包装器,但我不能让它按照我的意愿工作, 这就是我所拥有的:

simple_form_bootsrap.rb

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
    config.label_class = 'control-label'
    config.form_class = ''
    config.input_class = 'form-control'
    config.button_class = ''
  end

  config.wrappers :horizontal, tag: 'div', class: 'form-group', error_class: 'error' do |b|
    b.use :html5
    b.use :placeholder
    b.use :label
    b.wrapper tag: 'div', class: 'controls col-sm-10' do |ba|
      ba.use :input, class: 'form-control'
      ba.use :error, wrap_with: { tag: 'span', class: 'help-inline' }
      ba.use :hint,  wrap_with: { tag: 'p', class: 'help-block' }
    end
    config.label_class = 'col-sm-2 control-label'
    config.form_class = 'form-horizontal '
    config.input_class = 'form-control'
    config.button_class = 'btn btn-primary' 
  end
...

正如你所看到的,我创建了两个包装器,一个叫做:horizo​​ntal,一个叫做bootstrap。

现在,在我的代码中,我以两种不同的形式称呼它们:

<%= simple_form_for(@user :wrapper => :bootstrap) do |f| %>

<%= simple_form_for(@user,  :wrapper => :horizontal) do |f| %>

最后一个,包装:wrapper =&gt; :水平,按预期工作。它可以根据需要获取所有类和标签。

但第一个,:wrapper =&gt; :bootstrap,使用相同的设置:horizo​​ntal。 我希望他们分开,我做错了什么?

编辑:对我来说更精确,config。*变量继承到所有包装器,我该如何进行特定配置。*或者我如何只在一个元素中添加一个类,而不将其包装在另一个标签中?

0 个答案:

没有答案