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

时间:2018-03-11 12:14:36

标签: ruby-on-rails simple-form radio-group form-helpers

我使用以下使用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或vanilla rails形成助手来实现这个目标?

我考虑将无线电分成单独的表单输入,但这样可以一次选择多个选项。我很感激你的帮助。

1 个答案:

答案 0 :(得分:1)

你难道不是以simple_form形式使用标准的rails helper吗?如何直接使用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' %>