Rails - User :: ROLES常量导致无效表单提交错误

时间:2014-04-30 16:10:14

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

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

在我的用户控制器#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' } %>

知道发生了什么事吗?我是以错误的方式解决这个问题吗?

1 个答案:

答案 0 :(得分:1)

我希望当您提交表单并且验证失败时,您将使用create操作而不是new操作进行渲染。因此,您正在呈现new模板,但没有调用设置new的{​​{1}}中的代码。

如果您还在创建操作中添加@roles,也许当您知道验证失败时,它将解决问题。