【问题标题】:Rails - User::ROLES constant is causing error for invalid form submissionRails - User::ROLES 常量导致无效表单提交错误
【发布时间】:2014-04-30 16:10:13
【问题描述】:

我的用户模型中有一个不变的角色。它包含一个字符串数组,每个用户角色一个。

在我的用户控制器#new 操作中,我正在创建一个即时变量:

@roles = User::ROLES

用于在用户 _form.html.erb 上填充选择输入

  <div class="form-group">
    <%= f.label :role %>
    <%= f.select :role, @roles, {}, { class: 'form-control' } %>
  </div>

提交的表单有效时效果很好,但是当它无效时我收到此错误:

undefined method `empty?' for nil:NilClass

错误页面突出显示了这一行:

<%= f.select :role, @roles, {}, { class: 'form-control' } %>

知道发生了什么吗?我是不是走错路了?

【问题讨论】:

    标签: ruby-on-rails ruby validation ruby-on-rails-4


    【解决方案1】:

    我希望当您提交表单但验证失败时,您是从create 操作而不是new 操作呈现的。因此,您正在渲染 new 模板,但没有调用 new 中设置 @roles 的代码。

    如果你在create action中也加上@roles = User::ROLES,或许当你知道验证失败时,问题就解决了。

    【讨论】:

    • 完美!我在创建和更新操作中添加了@roles = User::ROLES,它解决了问题。谢谢!
    猜你喜欢
    • 1970-01-01
    • 2011-03-19
    • 2019-06-20
    • 1970-01-01
    • 2010-12-18
    • 1970-01-01
    • 1970-01-01
    • 2016-09-12
    • 1970-01-01
    相关资源
    最近更新 更多