it-swarm.com.de

Wie kann ich ein Kontrollkästchen und eine Beschriftung in einer Zeile in einem Rails Formular speichern?

Was kann ich tun, um die Beschriftung eines Kontrollkästchens in derselben Zeile wie das Kontrollkästchen in einer Ansicht Rails mit einem Formular zu belassen?

Derzeit geht das Label in die nächste Zeile:

<div class="span6 offset3">
<%= form_for(@user) do |f| %>
<%= render 'shared/error_messages', object: f.object %>

  <%= f.label :name %>
  <%= f.text_field :name %>

  <br>
  <%= f.check_box :terms_of_service %>
  <%= f.label :terms_of_service, "I agree to the #{link_to 'Terms of Service', policies_path}.".html_safe %>
  <br><br>

  <%= f.submit "Create my account", :class => "btn btn-large btn-primary" %>
<% end %>

Vielen Dank Alexandra

44
AndraD

Es sieht so aus, als würden Sie Bootstrap verwenden. Daher empfehle ich, Ihren Ansichtscode so anzupassen, dass er das in diesem Abschnitt der Bootstrap= docs: https: // getbootstrap. com/docs/4.3/components/forms/# horizontale-form

22
David Underwood

Laut Bootstrap-Wiki muss es sein

<label class="checkbox">
  <input type="checkbox"> Check me out
</label>

was in Ruby on Rails ist

<%= f.label :terms_of_service do %>
  <%= f.check_box :terms_of_service %>
  I agree to the <%= link_to 'Terms of Service', policies_path %>.
<% end %>
58
Benoît Legat
 <br>
  <%= f.check_box :terms_of_service, :style => "float:left;" %>
  <%= f.label :terms_of_service, "I agree to the #{link_to 'Terms of Service', policies_path}.".html_safe, :style => "float:left;" %>
  <br>
5
jainvikram444

Der Kommentar zur Antwort ist korrekt, setzt jedoch ein gewisses Maß an Verständnis für die Reihenfolge der Elemente voraus.

Die richtige Antwort lautet wie folgt:

<%= f.check_box :terms_of_service %>
<%= f.label :terms_of_service, "I agree to the #{link_to 'Terms of Service', policies_path}.".html_safe
                             , {class: "checkbox inline"} %>

Zwei Dinge sind notwendig:

  1. Die Klasse im label-Element
  2. Das Ankreuzfeldelement muss vor dem Beschriftungselement stehen.

Dies liegt auf der Hand, sobald Sie sehen, dass es funktioniert, aber alle anderen Beispiele für form_for haben immer die Eingaben nach den Bezeichnungen, und Sie müssen dies für das Kontrollkästchen ändern.

5
Patrck
  <div class="form-inline">
    <%= f.check_box :subscribed, class: 'form-control' %>
    <%= f.label :subscribed, "Subscribe" %>
  </div>
2
Still Learning

Um die i18n-Verwendung von label beizubehalten, können Sie t verwenden:

<%= f.label :my_field do %>
  <%= f.check_box :my_field %> <%= t 'activerecord.attributes.my_model.my_field' %>
<% end %>
2
Sidhannowe

ich hatte neulich ein ähnliches Problem, ich verwende Twitter Bootstrap, aber ich verwende auch den Edelstein simple_form. Ich musste dieses Detail durch CSS korrigieren. Hier ist mein Code:

<%=f.input :status, :label => "Disponible?",  :as => :boolean, :label_html => { :class => "pull-left dispo" }%>

cSS:

.dispo{
    margin-right:10%;
}
pull-left{
    float:left;
}
2
Rodrigo Zurek

für grundlegende Rails Tags:

<%= label_tag('retry-all') do %>
  Retry All
  <= check_box_tag("retry-all",false) %>
<% end %>
1
Blair Anderson

Ich würde das Kontrollkästchen in das Etikett einwickeln.

  <%= f.label :terms_of_service do %>
    <%= f.check_box :terms_of_service %>
    I agree to the <%= link_to 'Terms of Service', policies_path %>
  <% end %>

Wenn das Eingabefeld von seiner Beschriftung umbrochen wird, benötigen Sie das Attribut for auf der Beschriftung nicht. Die Beschriftung aktiviert das Kontrollkästchen, ohne dass es angeklickt wird. So noch einfacher:

  <label>
    <%= f.check_box :terms_of_service %>
    I agree to the <%= link_to 'Terms of Service', policies_path %>
  </label>

Generell kann dies für Rails eine Möglichkeit sein (human_attribute_name funktioniert mit i18n):

<label>
  <%= f.check_box :terms_of_service %>
  <%= User.human_attribute_name(:terms_of_service) %>
</label>
1
JSpang

Für Bootstrap 4 in HAML

  .form-check
    =f.label :decision_maker, class: 'form-check-label' do
      =f.check_box :decision_maker, class: 'form-check-input'
      Decision Maker

oder

  .form-group
    =f.check_box :decision_maker
    =f.label :decision_maker

https://getbootstrap.com/docs/4.3/components/forms/#default-stacked

<div class="form-check"> <label class="form-check-label"> <input class="form-check-input" type="checkbox" value=""> Option one is this and that&mdash;be sure to include why it's great </label> </div>

Der erste Weg ist der korrektere, aber der zweite Weg sieht praktisch identisch und trockener aus.

0
Chloe

Auf Rails 5.2, Ruby 2.4 und bootstrap 4.1.1:

<%= form.check_box :terms_of_service, label: "your custom label...."%> 

arbeitete für mich ohne Inline-Checkbox angeben zu müssen.

0
tomb

Verwenden Sie bootstrap? Eine einfache Möglichkeit ist das Hinzufügen von :class => "span1" in f.submit. Ich bin sicher, es hat funktioniert!

0
duykhoa
<div class="row"> 
  <div class="col-sm-1">
    <%= f.label :paid? %>
  </div>
  <div class="col-sm-1">
    <%= f.check_box :paid, value: 'false'  %>
  </div>
</div>
0
Jim