3

我正在使用带有 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?

4

2 回答 2

2

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

= 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
于 2017-07-06T02:50:05.880 回答
2

根据SimpleForm 源代码,它没有默认radio输入。

这个 gem 的文档建议了几种使用单选按钮的方法:

  1. <%= f.input :plan, as: :radio_buttons %>
  2. <%= f.input :plan, as: :boolean %>(带有一些附加值句柄)
  3. 您可以编写自己的自定义输入,命名为 feradio并放入文件夹 app/inputs。阅读有关自定义输入的更多信息
于 2016-03-17T02:27:31.893 回答