simple_form(星级)的多个单选按钮

Multiple radio buttons with simple_form (Star Rating)

我正在使用 simple_form 并尝试让自定义包装器正常工作。到目前为止运气不好。

我想创建一个简单的星级评分,每个值都有 5 个单选按钮。期望的输出:

<fieldset class="rating-new">
  <input type="radio" id="star5" name="rating" value="5" />
  <label class = "full" for="star5" title="Awesome - 5 stars"></label>

  <input type="radio" id="star4" name="rating" value="4" />
  <label class = "full" for="star4" title="Pretty good - 4 stars"></label>

  <input type="radio" id="star3" name="rating" value="3" />
  <label class = "full" for="star3" title="Meh - 3 stars"></label>

  <input type="radio" id="star2" name="rating" value="2" />
  <label class = "full" for="star2" title="Kinda bad - 2 stars"></label>

  <input type="radio" id="star1" name="rating" value="1" />
  <label class = "full" for="star1" title="Sucks big time - 1 star"></label>
</fieldset>

我正在使用 simple_form-bootstrap 并且我知道我需要创建一个自定义包装器来执行此操作,但我一直在追逐它,但似乎无法弄清楚。

关于如何实现这一目标的想法?

您可以使用 https://github.com/plataformatec/simple_form#collection-radio-buttons

中的 collection 单选按钮
form_for @something_rated do |f|
  f.collection_radio_buttons :rating, [[1, '1'] ,[2, '2'],[3, '3'],[4, '4'],[5, '5']], :first, :last
end

感谢@HarlemSquirrel 提醒我collection_radio_buttons。我想为它创建一个自定义包装器,但我决定调整标签和样式以获得我想要的位置:

以下是我的工作方式:

<%= f.collection_radio_buttons :rating, [[5], [4], [3], [2], [1]], :first, :last, item_wrapper_tag: false, boolean_style: :inline do |b| %>
  <%= b.radio_button + b.label {''} %>
<% end %>