我的用户模型中有一个恒定的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' } %>
知道发生了什么事吗?我是以错误的方式解决这个问题吗?
答案 0 :(得分:1)
我希望当您提交表单并且验证失败时,您将使用create
操作而不是new
操作进行渲染。因此,您正在呈现new
模板,但没有调用设置new
的{{1}}中的代码。
如果您还在创建操作中添加@roles
,也许当您知道验证失败时,它将解决问题。