如何根据 Array 对象标记 simple_form 复选框?

How to mark the simple_form checkbox based on a Array object?

Rails 视图有两个参数

list_of_attributes = ["a1", "a2", "a3", "a4"]
user_selections = ["a2", "a4"]

我能够使用以下 simple_form 定义

显示适当的复选框和任何关联的用户选择
<% list_of_attributes.each do |item| %>
   <label>
     <%= check_box_tag "user_selections[]", item, user_selections.include?(item) %>
     <%= item %>
   </label>
<% end %>

如何使用 simple_form f.input 语法定义上述行为?使用以下定义,我能够显示适当的复选框,但任何用户选择都不是 'checked'.

<%= f.input key, as: :check_boxes, collection: list_of_attributes, 
 :label => key, class: "form-control" %>

感谢您的帮助。

添加选中的属性使 f.input 定义生效。

<%= f.input key, as: :check_boxes, 
                    collection: list_of_attributes,
                    :label => key, 
                    checked: user_selections,
                    class: "form-control" %>                                    
              <% end %>

试试这个。这对我有用 bootstrap CSS。检查我的 github 回购 here

中的第 25 行
<div class="form-group">
    <div class="row">
        <div class="col-sm-offset-3 col-sm-8">
            <%= f.collection_check_boxes :your_model_ids, Your_model.all, :id, :list_of_attributes do |cb| %>
            <% cb.label(class: "checkbox-inline input_checkbox") {cb.check_box(class: "checkbox") + cb.text} %>
        <% end %>
      </div>
    </div>
  </div>

然后在您的 CSS 文件中使用此自定义 input_checkbox class 以上

    .input_checkbox input {
    width: auto !important;
}