自定义 Rails 5 collection_radio_buttons 以与 Bootstrap 4 一起使用

Customizing Rails 5 collection_radio_buttons to work with Bootstrap 4

正在尝试使用 Bootstrap 4 的表单收音机组件。

使用:

像这样:

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

我正在尝试使用 collection_radio_buttons 辅助方法来实现此目的,但我没有任何运气。

谁能告诉我如何做到这一点?提前致谢。

目前,我有:

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

缺少标签名称,因为我不确定如何获取标签名称。

我试过 label.name 但出现错误。

这是我目前得到的输出:

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

collection_radio_buttons accepts a block,你要找的方法是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 %>

如果您需要禁用选项 3,您可以添加某种模型方法来检查它是否应该被禁用,然后在 <div class="radio"> 标记中添加类似 <%= b.object.disabled? ? 'disabled' : '' %> 的内容。与 b.radio_button 调用相同 (b.radio_button(disabled: b.object.disabled?)).