我怎么能做像ActionVIew :: Helpers :: FormHelper#check_box这样的东西,但是没有一个对象可以把它挂起来?
我正在构建用户个人资料编辑器。我的一些字段是普通的布尔值,check_box很适合它们:
应用程序/视图/用户/ edit.html.erb:
<%= f.label :admin %>
<%= check_box :user, :admin %>
产生预期的额外隐藏字段
<label for="user_admin">Admin</label>:
<input name="user[admin]" type="hidden" value="0" />
<input id="user_admin" name="user[admin]" type="checkbox" value="1" />
并按预期发布设置。
但是我的用户也有密码,我想要的行为实际上并不是设置或清除布尔字段,而是触发电子邮件介导的重置协议。我希望看起来与简单check_box :user, :admin
案例相同。用户对象没有“reset_password”字段,因此这只是语法错误:
<%= f.label :reset_password %>
<%= check_box :user, :reset_password %>
编辑:我想我可以创建一个名为reset_password
的实际db列/对象属性,它始终为false,但是当控制器看到尝试设置它时,它会启动重置协议。但总是假的,只读的属性似乎有点傻,不是吗?
答案 0 :(得分:0)
如果它不是用户个人资料数据的一部分,为什么要将其设为复选框?它可以只是一个链接,而不是一个复选框,在用户编辑屏幕或用户配置文件视图上。如果你真的希望它作为表单中的一个复选框,你也可以只使用一个子表单的一部分,它将与主表单同时提交,使用javascript调用,并隐藏提交按钮... < / p>