在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"} %>