Rails。使用 Form Helpers 或 Simple_form 将单选按钮集合拆分为列

Rails. Splitting a radio button collection into columns with Form Helpers or Simple_form

我有以下使用 Simple_form gem 的表格:

<%= simple_form_for @match_prediction do |f| %>
  <%= f.input :outcome, label: false, as: :radio_buttons, collection: [['local', match.local_team], ['Tie', 'Tie'], ['visit', match.visiting_team]], label_method: :second, value_method: :first %>
  <%= f.submit 'Save' %>
<% end %>

目前它按预期工作,这意味着:呈现 3 个单选按钮,彼此互斥,每个都会产生一个唯一的字符串传递给服务器。

问题:我想在 Bootstrap 网格中的不同列中分隔每个单选按钮,如下所示:

<div class="row prediction">
  <div class="col-sm-4">
   <!-- FIRST RADIO BUTTON HERE -->
  </div>
  <div class="col-sm-4">
   <!-- SECOND RADIO BUTTON HERE -->
  </div>
  <div class="col-sm-4">
   <!-- THIRD RADIO BUTTON HERE -->
  </div>
    <%= f.submit 'Save' %>
</div>

由于整个集合是在表单代码中的一行中指定的,我不能简单地拆分行并将它们插入相关的 HTML。

有没有办法通过 simple_form 或香草 rails 表单助手来实现此目的?

我考虑过将收音机拆分为单独的表单输入,但这将允许一次 select 多个选项。我很感激你的帮助。

您不能使用 simple_form 形式的标准 rails 助手吗?直接使用 radio_button 助手怎么样? Docs

<div class="row prediction">
  <div class="col-sm-4">   
    <%= radio_button 'match_prediction', 'outcome', 'local', checked: @match_prediction.outcome == 'local' %> <%= match.local_team %>
  </div>
  <div class="col-sm-4">
    <%= radio_button 'match_prediction', 'outcome', 'Tie', checked: @match_prediction.outcome == 'Tie' %> <%= 'Tie' %>
  </div>
  <div class="col-sm-4">      
    <%= radio_button 'match_prediction', 'outcome', 'visit', checked: @match_prediction.outcome == 'visit' %> <%= match.visiting_team %>
  </div>
  <%= f.submit 'Save' %>
</div>

如果可以在 simple_form 中访问标准 FormHelper,您可以调用:

<%= f.radio_button 'outcome', 'xzy' %> <%= 'whatever' %>