Simple_form:对于标签内嵌复选框剥去标签(Simple_form: Remove oute

2019-07-31 04:31发布

使用Simple_form 2.0.2

使用HAML简单形式的代码:

= f.input :remember_me, as: :boolean, inline_label: 'Remember me'

但它呈现此:

<div class="control-group boolean optional">
  <label class="boolean optional control-label" for="admin_remember_me">Remember me</label>
  <div class="controls">
    <input name="admin[remember_me]" type="hidden" value="0" />
    <label class="checkbox"><input class="boolean optional" id="admin_remember_me" name="admin[remember_me]" type="checkbox" value="1" />Remember me</label>
  </div>
</div>

怎样删除已呈现的是第一个标签,所以我只有内嵌标签?

Answer 1:

您可以使用:

= f.input :remember_me, as: :boolean, inline_label: 'Remember me', label: false


Answer 2:

发现很多谷歌福后的解决方案。

使用input_field而不是input ,不会自动生成一个标签。

= f.input_field :remember_me, as: :boolean, inline_label: 'Remember me'


Answer 3:

对他们来说,这是行不通的

= f.input_field ...

用这样的方式

= f.check_box ...



Answer 4:

随着simple_form 2.1.0和3.0.20的轨道,没有在这里列出的解决方案的工作(我不希望,因为它是失败的入场f.input_field使用)。

缺少的部分是boolean_style选项:

options.merge!({label: false, boolean_style: :inline})

我建议你创建这个自定义输入(例如:inline_checkbox)

boolean_style配置为:嵌套在默认情况下,我认为:

# Defaults to :nested for bootstrap config.
#   :inline => input + label
#   :nested => label > input
config.boolean_style = :nested


Answer 5:

.control-group.error .help-inline {
  display: none;
}

这应该工作,它为我工作在轨道上3.2和simple_form 2.X +



Answer 6:

也许为时已晚,但灵感来自加莫夫答案我有此从初始化文件“ 配置/ simple_form_bootstrap.rb”内嵌引导复选框自定义包装:

config.wrappers :horizontal_radio_and_checkboxes, tag: 'div', class: 'form-group', error_class: 'has-error' do |b|
   b.use :html5
   b.optional :readonly

   b.use :label, class: 'col-sm-3 control-label'
   b.use :input
   b.use :error, wrap_with: { tag: 'span', class: 'help-block' }
   b.use :hint,  wrap_with: { tag: 'p', class: 'help-block' }
 end

产生这个HTML:

 <div class="form-group boolean optional user_admin">
    <label class="boolean optional col-sm-3 control-label" for="user_admin">Admin</label>
    <div class="col-sm-9 checkbox-inline">
    <input name="user[admin]" value="0" type="hidden">
    <input class="boolean optional" id="user_admin" name="user[admin]" value="1" type="checkbox">
  </div>



文章来源: Simple_form: Remove outer label for an inline checkbox with label