我正在使用SimpleForm + Bootstrap。我需要在复选框输入后立即添加<i></i>
标记,如下所示:
<div class="form-group">
<div class="checkbox">
<label class="checkbox">
<input type="checkbox" >
<i></i>
Label Text
</label>
</div>
</div>
所以我修改了初始化程序
#initializers/simple_form_bootstrap.rb
config.wrappers :vertical_boolean, tag: 'div', class: 'form-group', error_class: 'has-error' do |b|
b.use :html5
b.optional :readonly
b.wrapper tag: 'div', class: 'checkbox' do |ba|
ba.wrapper tag: 'label' do |bb|
bb.use :input
bb.wrapper tag: 'i' do |baa|
end
bb.use :label_text
end
end
b.use :error, wrap_with: { tag: 'span', class: 'help-block' }
b.use :hint, wrap_with: { tag: 'p', class: 'help-block' }
end
但这是插入额外的标签标签
<div class="form-group">
<div class="checkbox">
<label>
<label class="checkbox">
<input type="checkbox" >
<i></i>
Label Text
</label>
</label>
</div>
</div>
label.checkbox
是simple_form应用的默认标签。即,通过config.boolean_label_class = 'checkbox'
。所以看起来我可以删除自定义标签包装。
b.wrapper tag: 'div', class: 'checkbox' do |ba|
# ba.wrapper tag: 'label' do |bb|
bb.use :input
bb.wrapper tag: 'i' do |baa|
end
bb.use :label_text
# end
end
但是标签只围绕输入。
<div class="form-group">
<div class="checkbox">
<label class="checkbox">
<input type="checkbox" >
</label>
<i></i>
Label Text
</div>
</div>
我尝试过启用和停用inline_label
。我正在使用包含默认simple_form包装器的新配置文件。唯一的修改如上。
为什么Simple_Form在未调用use label_input
的情况下对输入应用标签?
如何配置simple_form以使用标签包装输入,<i>
标签和标签文本?
答案 0 :(得分:0)
这让我想起了很多头疼的问题,但最终有一个简单的解决办法。
为了遇到类似问题的其他人的利益,请在初始化程序中进行以下更改
Warning: mail(): Failed to connect to mailserver at "localhost" port 25, verify your "SMTP" and "smtp_port" setting in php.ini or use ini_set()
在此更改之后,我的自定义包装器按预期运行,没有“神奇地”出现的其他元素。