简单表单 - 复选框组中的多个属性

Simple Form - Multiple attributes in checkbox group

我有一个具有以下属性的 User 模型:

#  full_time                :boolean
#  part_time                :boolean
#  contract                 :boolean

我想为这些属性创建一个简单的表单复选框组。据我所知,简单形式 api 是为了映射到 has_many & has_and_belongs_to_many 关联,如下所示:

f.collection_check_boxes :role_ids, Role.all, :id, :name

是否有一种方法可以根据表单的 API 准则来处理给定模型上多个属性的更新?或者这是否表明我应该以不同的方式对数据建模?

f.collection_check_boxes 是一种通用方法,用于为 单个 属性生成具有任意 name/value 的多个复选框。您提供的示例在文档中作为此方法的最后一个提到,可能是因为 f.association 对于关联属性更好。

<%= f.association :role, Role.all %>

如果是你的属性,我认为 f.collection_check_boxes 不适用。如果这些属性不是相互排斥的,那么我看不出有什么问题 - 坚持使用它们,只给每个属性一个它自己的复选框。

<%= f.input :full_time %>
<%= f.input :part_time %>
<%= f.input :contract %>

simple_form 将检测它们的类型并为每个类型生成一个复选框。如果您想摆脱包装 div 并将它们更紧密地分组,请使用 wrapper: false 选项。

如果它们互斥,那么整数列和 enum 可能是更好的主意。