Simple_form:删除带有标签的内联复选框的外部标签

Dav*_*Nix 33 ruby ruby-on-rails-3 simple-form

使用Simple_form 2.0.2

使用HAML的简单表单代码:

= f.input :remember_me, as: :boolean, inline_label: 'Remember me'
Run Code Online (Sandbox Code Playgroud)

但它呈现了这个:

<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>
Run Code Online (Sandbox Code Playgroud)

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

Her*_* S. 80

您可以使用:

= f.input :remember_me, as: :boolean, inline_label: 'Remember me', label: false
Run Code Online (Sandbox Code Playgroud)


Dav*_*Nix 24

经过很多谷歌后找到了解决方案.

使用input_fieldinput不是自动生成标签.

= f.input_field :remember_me, as: :boolean, inline_label: 'Remember me'
Run Code Online (Sandbox Code Playgroud)

  • `input_field`的问题是它不会显示验证错误. (3认同)
  • @ScottBartell我认为你的意思是在ruby pre 1.9中没有erb.拥抱新的.:) (2认同)

Ser*_*kyy 11

对谁不行

= f.input_field ...

用这种方式

= f.check_box ...


gam*_*mov 7

使用simple_form 2.1.0和rails 3.0.20,这里列出的解决方案都没有工作(我不想使用f.input_field,因为它是对失败的承认).

缺少的部分是boolean_style选项:

options.merge!({label: false, boolean_style: :inline})
Run Code Online (Sandbox Code Playgroud)

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

boolean_style配置为:默认嵌套,我认为:

# Defaults to :nested for bootstrap config.
#   :inline => input + label
#   :nested => label > input
config.boolean_style = :nested
Run Code Online (Sandbox Code Playgroud)