单个simple_form单选按钮

时间:2016-03-16 21:08:14

标签: ruby-on-rails ruby simple-form form-for simple-form-for

我正在使用带有Rails 4的SimpleForm 3.2.1。我正在尝试将rails表单转换为simple_form。以下是适用于具有常规轨道形式的单选按钮的代码:

  <ul class="list-radios list-multiplier">
    <% @organization_plans.each_with_index do |plan, index| %>

      <li>
        <div class="radio custom-radio">
          <%= f.radio_button :plan_id, plan.id, id: "field-rad#{index}", data: {price: plan.total_price} %>

          <label class="form-label" for='field-rad<%= index %>'>
            <span></span>

            <%= plan.description %>
          </label>
        </div><!-- /.radio -->
      </li>
    <% end %>
  </ul><!-- /.list-radios -->

我尝试使用以下代码将其转换为SimpleForm:

  <ul class="list-radios list-multiplier">
    <% @organization_plans.each_with_index do |plan, index| %>

      <li>
        <div class="radio custom-radio">
          <%= f.input :plan_id, value: plan.id, input_html: {id: "field-rad#{index}"}, data: {price: plan.total_price}, label: false, as: :radio %>

          <label class="form-label" for='field-rad<%= index %>'>
            <span></span>

            <%= plan.description %>
          </label>
        </div><!-- /.radio -->
      </li>
    <% end %>
  </ul><!-- /.list-radios -->

然而,当我在浏览器中打开页面时,我收到错误:

No input found for radio

如何让此表单开始使用simple_form?

2 个答案:

答案 0 :(得分:2)

根据SimpleForm source code,它没有默认radio输入。

此gem的文档提供了几种使用单选按钮的方法:

  1. <%= f.input :plan, as: :radio_buttons %>
  2. <%= f.input :plan, as: :boolean %>(带一些额外的值句柄)
  3. 您可以编写自己的自定义输入,例如。命名为radio并放入文件夹app / inputs。 Read more about custom inputs

答案 1 :(得分:1)

使用常规导轨助手没有任何问题。如果您喜欢一致的包装器,可以将它们嵌套在输入中。它看起来像

= f.input :plan_id, label: false do 
  ul
    - @organization_plans.each do |plan|
      li
        = f.radio_button :plan_id, plan.id
        = f.label :plan_id, plan.description, value: plan.id

当然,如果您不需要太多的自定义,也可以使用该系列

= f.input :plan_id, collection: @organization_plans.pluck(:id, :description), as: :radio_buttons, label: false