Ruby on rails 简单形式的布尔值关联复选框
我有一个Ruby on rails 简单形式的布尔值关联复选框,ruby-on-rails,simple-form,Ruby On Rails,Simple Form,我有一个用户模型,它有许多订阅s(电子邮件通知的类别)。用户是否收到与给定订阅对应的电子邮件取决于订阅中的活动字段是否为真。我试图使用Simple Form的关联方法,通过更改活动字段的值,允许用户订阅或取消订阅: = simple_form_for @user do |f| = f.input :name = f.input :email, label: "E-mail" = f.association :subscriptions, collection: @user.subsc
用户
模型,它有许多订阅
s(电子邮件通知的类别)。用户是否收到与给定订阅对应的电子邮件取决于订阅中的活动
字段是否为真。我试图使用Simple Form的关联
方法,通过更改活动
字段的值,允许用户订阅或取消订阅:
= simple_form_for @user do |f|
= f.input :name
= f.input :email, label: "E-mail"
= f.association :subscriptions, collection: @user.subscriptions,
as: :check_boxes, value_method: :active, checked: lambda { |subscription| subscription.active? }
= f.button :submit, "Save"
这似乎确实正确地显示了带有相应复选框的订阅,这些复选框的选中状态对应于数据库中的值。但是勾选或取消勾选框并提交表单似乎对数据库没有任何影响。我认为您应该在这里使用
简单字段。这样,它将作为嵌套表单提交,并自动保存在数据库中。我不确定是否可以使用关联
保存关联模型的属性
= simple_form_for @user do |f|
= f.input :name
= f.input :email, label: "E-mail"
- f.simple_fields_for :publications do |subscription|
# Here you have all simple_form methods available
= subscription.check_box :active
= f.button :submit, "Save"
还请注意,您必须为用户模型中的订阅添加accepts\u nested\u attributes\u。您需要在用户模型中添加以下内容:
attr_accessible :subscriptions_attributes
谢谢请注意,attr\u accessible
在Rails 4中不可用。您需要将相关参数添加到用户模型的白名单中。我必须在这些属性中包括订阅id
;否则,每次提交表单时,订阅数量将增加一倍。