【问题标题】:Simple_form: Remove outer label for an inline checkbox with labelSimple_form:删除带有标签的内联复选框的外部标签
【发布时间】:2012-08-24 17:25:06
【问题描述】:

使用 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>

如何删除第一个呈现的标签,以便我只有内联标签?

【问题讨论】:

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


    【解决方案1】:

    你可以使用:

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

    【讨论】:

      【解决方案2】:

      在谷歌多方尝试之后找到了解决方案。

      使用input_field 代替input,后者不会自动生成标签。

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

      【讨论】:

      • 仅供参考,这里有一个适用于erb的解决方案= f.input_field :remember_me, :as =&gt; :boolean, :inline_label =&gt; 'Remember me'
      • @ScottBartell 我认为你的意思是 ruby​​ pre 1.9 不是 erb。拥抱新事物。 :)
      • input_field 的问题是它不会显示验证错误。
      【解决方案3】:

      对谁不起作用

      = f.input_field ...

      这样使用

      = f.check_box ...

      【讨论】:

      • 但这并不真正适用于 simple_form,不是吗?
      • 是的,实际上@Chris_Peters
      【解决方案4】:

      对于 simple_form 2.1.0 和 rails 3.0.20,此处列出的所有解决方案都不起作用(我不想使用 f.input_field,因为它承认失败)。

      缺少的部分是 boolean_style 选项:

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

      我建议您为此创建一个自定义输入(例如:inline_checkbox)

      boolean_style 默认配置为 :nested,我认为:

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

      【讨论】:

      • 有单选按钮选项吗?
      【解决方案5】:
      .control-group.error .help-inline {
        display: none;
      }
      

      这应该可以,它适用于 rails 3.2 和 simple_form 2.x+

      【讨论】:

        【解决方案6】:

        也许为时已晚,但受到 gamov 回答的启发,我已将其作为初始化程序文件“config/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>
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2014-08-16
          • 2021-09-16
          • 2011-02-01
          • 2014-08-13
          • 1970-01-01
          • 2016-04-16
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多