【发布时间】:2018-05-15 13:16:17
【问题描述】:
我有一个表单,用户可以在其中添加他们的生日。目前,每当有人提交此表单时,他都会添加一个生日,因为日期输入总是有一个值。
有没有办法可以添加一个复选框 - 只有当它被选中时,生日才应该保存到记录中?如果未选中该复选框,则应删除 birthday 的当前值。
= simple_form_for resource, as: resource_name, url: registration_url(resource_name) do |f|
= f.input :another_field
= f.input :birthday_set?, as: :boolean # or something else?
= f.input :birthday
= f.input :submit
【问题讨论】:
-
这个最简单的方法是使用 before_save 回调来跟踪birthday_set 参数,如果为false,则设置生日为null,api.rubyonrails.org/classes/ActiveRecord/Callbacks.html
-
@atomAltera 难道没有更简单的方法,因为这意味着我还需要一个
attr_accessor? -
那么你应该在控制器级别解决这个问题。假设您有 create_params 帮助器,它返回模型创建所需的所有字段。你可以在那个助手里面做这个检查
-
如果复选框参数为真,您可以在控制器端修改它,否则保存,反之亦然。
-
@Gabbar SRack 指出您的解决方案存在一些问题。
标签: ruby-on-rails forms checkbox attributes