【发布时间】:2014-01-30 13:14:33
【问题描述】:
我怎样才能执行 ActionVIew::Helpers::FormHelper#check_box 之类的操作,但没有对象可以挂起它?
我正在构建一个用户配置文件编辑器。我的一些字段是普通的布尔值,check_box 非常适合它们:
app/views/users/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 的实际数据库列/对象属性,它始终为假,但是当控制器看到设置它的尝试时,它会启动重置协议。但是一个永远为假的只读属性似乎有点傻,不是吗?
【问题讨论】: