2016-07-14 16 views
0

Es wird versucht, die Formularfunkkomponente von Bootstrap 4 zu verwenden.Anpassen von Rails 5 collection_radio_buttons für die Arbeit mit Bootstrap 4

Verwendung:

  • Rails 5
  • Bootstrap 4 (bootstrap_ruby gem)

So:

<div class="radio"> 
    <label> 
    <input type="radio" name="exampleRadios" id="exampleRadios1" value="option1" checked> 
    Option one is this and that&mdash;be sure to include why it's great 
    </label> 
</div> 
<div class="radio"> 
    <label> 
    <input type="radio" name="exampleRadios" id="exampleRadios2" value="option2"> 
    Option two can be something else and selecting it will deselect option one 
    </label> 
</div> 
<div class="radio disabled"> 
    <label> 
    <input type="radio" name="exampleRadios" id="exampleRadios3" value="option3" disabled> 
    Option three is disabled 
    </label> 
</div> 

Ich versuche, die collection_radio_buttons Helper-Methode zu verwenden, um erreiche das, aber ich habe kein Glück.

Kann mir jemand eine Idee geben, wie das gemacht werden kann? Danke im Voraus.

Derzeit habe ich:

<div class="radio"> 
    <%= collection_radio_buttons(:post, :category_id, Category.all, :id, :name) do |b| %> 
    <%= b.label do %> 
     <%= b.radio_button %> 
    <% end %> 
    <% end %> 
</div> 

Es ist der Markenname fehlt, weil ich nicht sicher bin, wie das Label-Namen zu erhalten.

Ich habe versucht label.name, aber es wird ein Fehler ausgelöst.

Dies ist die Ausgabe ich zur Zeit bin immer:

Sie suchen
<div class="radio"> 
<input type="hidden" name="post[category_id]" value=""> 
<label for="post_category_id_1"> 
    <input type="radio" value="2" name="post[category_id]" id="post_category_id_30"> 
</label> 
<label for="post_category_id_2"> 
    <input type="radio" value="2" name="post[category_id]" id="post_category_id_31"> 
</label> 
<label for="post_category_id_3"> 
    <input type="radio" value="3" name="post[category_id]" id="post_category_id_32"> 
</label> 
</div> 

Antwort

2

collection_radio_buttons accepts a block, und das Verfahren ist text:

<%= collection_radio_buttons(:post, :category_id, Category.all, :id, :name) do |b| %> 
    <div class="radio"> 
    <%= b.label do %> 
     <%= b.radio_button + b.text %> 
    <% end %> 
    </div> 
<% end %> 

Wenn Sie 3 deaktiviert Option benötigen, könnten Sie Fügen Sie eine Art von Modellmethode hinzu, um zu prüfen, ob sie deaktiviert werden soll oder nicht, und fügen Sie dann im <div class="radio">-Tag etwas wie <%= b.object.disabled? ? 'disabled' : '' %> hinzu. Gleiches mit dem b.radio_button Aufruf (b.radio_button(disabled: b.object.disabled?)).

+0

Danke @ flanger001 :) b.text hat den Trick auch Dank für die Referenzierung der Dokumente. –