如何使SimpleForm布尔字段默认显示为radio_buttons?

时间:2014-07-09 20:07:44

标签: ruby ruby-on-rails-4 simple-form formbuilder

我使用Rails SimpleForm gem创建表单。我意识到一个名为&#34的布尔字段;接受" (通常显示为复选框)可以通过更改

显示为一对单选按钮
<%= f.input :accepts %>

<%= f.input :accepts, as: :radio_buttons %>

但是,我使用通用表单模板为循环中的任何Rails模型动态生成表单,如下所示:

<% some_rails_model.attribute_names.each |attr| %>
  <% f.input attr %>
<% end %>

由于我不知道特定属性是否是布尔值(而不是字符串,整数等),我不知道何时添加as: :radio_buttons

有没有办法让所有布尔值默认显示为单选按钮?

或者,是否有一些简单的方法来检查attr是否为布尔值,以便我知道何时添加as: :radio_buttons

1 个答案:

答案 0 :(得分:0)

我找到了一个解决方案,其中包括检查模型中特定字段是否为布尔值:

<% some_rails_model.attribute_names.each |attr| %>
  <% if some_rails_model.columns_hash[attr].type == :boolean %>
    <%= f.input attr, as: :radio_buttons %>
  <% else %>
    <%= f.input attr %>
  <% end %>
<% end %>