【问题标题】:Rails check_box without an object?没有对象的Rails check_box?
【发布时间】: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 的实际数据库列/对象属性,它始终为假,但是当控制器看到设置它的尝试时,它会启动重置协议。但是一个永远为假的只读属性似乎有点傻,不是吗?

【问题讨论】:

    标签: checkbox ruby-on-rails-4


    【解决方案1】:

    如果它不是用户个人资料数据的一部分,为什么要让它成为一个复选框?它可能只是一个链接而不是一个复选框,无论是在用户编辑屏幕上还是在用户个人资料视图上。如果您真的希望它作为表单中的复选框,您也可以将复选框作为子表单的一部分,该子表单将与主表单同时提交,使用 javascript 调用并隐藏提交按钮...

    【讨论】:

    • 感谢您挑战我的基本假设。我认为此操作不属于“设置”屏幕/表单/页面。我会像处理“电子邮件”一样处理它:个人资料上的链接而不是“设置”上的复选框
    猜你喜欢
    • 2015-10-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-03
    • 1970-01-01
    相关资源
    最近更新 更多