web-dev-qa-db-de.com

Simple_form: Entfernen Sie das äußere Label für ein Inline-Kontrollkästchen mit Label

Simple_form 2.0.2 verwenden

Der einfache Formularcode mit HAML:

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

Aber das macht es:

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

Wie entferne ich das erste gerenderte Etikett, sodass nur das Inline-Etikett vorhanden ist?

32
David Nix

Sie können verwenden:

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

Eine Lösung nach viel Google Fu gefunden.

Verwenden Sie input_field anstelle von input, wodurch kein Label automatisch generiert wird.

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

Für wen funktioniert es nicht

= f.input_field ...

Verwenden Sie diesen Weg

= f.check_box ...

11
Serge Seletskyy

Mit simple_form 2.1.0 und Rails 3.0.20 hat keine der hier aufgelisteten Lösungen funktioniert (ich möchte f.input_field nicht verwenden, da dies eine Niederlage ist).

Der fehlende Teil ist die Option boolean_style :

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

Ich schlage vor, dass Sie eine benutzerdefinierte Eingabe erstellen (z. B. inline_checkbox).

boolean_style ist konfiguriert als: standardmäßig verschachtelt, ich denke:

# Defaults to :nested for bootstrap config.
#   :inline => input + label
#   :nested => label > input
config.boolean_style = :nested
7
gamov
.control-group.error .help-inline {
  display: none;
}

Das sollte funktionieren, es funktioniert für mich auf Rails 3.2 und simple_form 2.x +

0
Dreamr OKelly

Vielleicht zu spät, aber inspiriert von der Antwort von gamov. Ich habe dies aus dem Inline-Bootstrap-Kontrollkästchen in der Initialisierungsdatei ' config/simple_form_bootstrap.rb ' zu einem benutzerdefinierten Wrapper gemacht:

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

welches diese HTML erzeugt:

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

0
Marino