我正在尝试为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
...
正如你所看到的,我创建了两个包装器,一个叫做:horizontal,一个叫做bootstrap。
现在,在我的代码中,我以两种不同的形式称呼它们:
<%= simple_form_for(@user :wrapper => :bootstrap) do |f| %>
和
<%= simple_form_for(@user, :wrapper => :horizontal) do |f| %>
最后一个,包装:wrapper =&gt; :水平,按预期工作。它可以根据需要获取所有类和标签。
但第一个,:wrapper =&gt; :bootstrap,使用相同的设置:horizontal。 我希望他们分开,我做错了什么?
编辑:对我来说更精确,config。*变量继承到所有包装器,我该如何进行特定配置。*或者我如何只在一个元素中添加一个类,而不将其包装在另一个标签中?