在Rails 4中设置编辑方法的复选框

假设我在new.html.erb中有一个表单,其中包含一些复选框和选择标记以及其他text_fields。 假设我创建了一个记录(选中一个或多个复选框并选择一些内容)并将其成功保存到DB。 当我去edit.html.erb应该编辑这条记录时,我有以下情况:

1)所有text_fields都填充了我要编辑的记录的值(OK)

2)但是复选框都未选中(不行)

3)选择标签中没有选择任何内容(不是OK)

所以第2和第3点是有问题的。 如何在编辑记录时填充复选框并选择标记?

我的例子:我有一个collection_select:

 "types"} %> 

以及根据选择标记值实际生成的复选框(这可行)。

      

检查多个复选框时,它们的值将作为数组存储在DB中。 例如:

  • ‘1’
  • ‘2’表示选中复选框1和2(实际上是id)。

对于复选框, check_box_tag允许第三个参数,即是否已选中。 因此,我们可以简单地检查对象是否已经具有该类型。 使用你绑定表单的对象会更容易,但由于你没有发布完整的表单,我看不到它是什么。 因此,您可以将f.object更改为@post或其绑定的任何内容。

 <% @stypes.each do |stype| %>  <%= check_box_tag 'stype_ids[]', stype.id, f.object.stype_ids.include?(stype.id) %> <%= stype.subTypeName %>  
<% end %>

对于选择,您只需将所选内容传递给方法。 您可以再次将f.object替换为您绑定表单的任何内容。

 <%= f.collection_select :type, RequestType.order(:typeName), :id, :typeName, { selected: f.object.type, include_blank:true }, {:class => "types"} %>