【发布时间】:2018-05-31 06:10:32
【问题描述】:
我正在学习 Ruby on Rails 和 100% 的编码新手。 目前,我收到这条消息:
提取的源代码(第 1 行附近):nil:NilClass 的未定义方法“错误”
<% if obj.errors.any? %>
我只在我的 edit.html.erb 中收到此消息:
<%= render 'shared/errors', obj: @user %>
<div class='row'>
<div class='col-xs-12'>
<%= form_for(@user, :html => {class: "form-horizontal", role: "form"}) do |f| %>
<div class="form-group">
<div class="control-label col-sm-2">
<%= f.label :username %>
</div>
<div class="col-sm-8">
<%= f.text_field :username, class: "form-control", placeholder: "Enter Username", autofocus: true %>
</div>
</div>
<div class="form-group">
<div class="control-label col-sm-2">
<%= f.label :email %>
</div>
<div class="col-sm-8">
<%= f.email_field :email, class: "form-control", placeholder: "Enter Email" %>
</div>
</div>
<div class="form-group">
<div class="control-label col-sm-2">
<%= f.label :password %>
</div>
<div class="col-sm-8">
<%= f.password_field :password, class: "form-control", placeholder: "Enter Password" %>
</div>
</div>
<div class = "form-group">
<div class = "col-sm-offset-2 col-sm-10">
<%= f.submit 'Sign Up', class: "btn btn-primary btn-md" %>
</div>
</div>
<% end %>
<div class = "col-xs-4 col-xs-offset-5">
[ <%= link_to 'Back to Index', articles_path %> ]
</div>
</div>
</div>
我的 new.html.erb 具有完全相同的代码,但没有收到错误消息。这是用户控制器:
class UsersController < ApplicationController
def new
@user = User.new
end
def create
@user = User.new(user_params)
if @user.save
flash[:success] = "Welcome to Alpha Blog #{@user.username}"
redirect_to articles_path
else
render 'new'
end
def edit
@user = User.find(params[:id])
end
def update
end
end
private
def user_params
params.require(:user).permit(:username, :email, :password)
end
end
这是部分错误:
<% if obj.errors.any? %>
<div class="row">
<div class="col-xs-8 col-xs-offset-2">
<div class ="panel panel-danger">
<div class="panel-heading">
<h2 class ="panel-title">
<%= pluralize(obj.errors.count, "error") %>
prohibited this article from being saved:
</h2>
<div class ="panel-body">
<ul>
<% obj.errors.full_messages.each do |msg| %>
<li><%= msg %></li>
<% end %>
</ul>
</div>
</div>
</div>
</div>
</div>
<% end %>
我做错了什么?提前致谢!
【问题讨论】:
-
想询问错误。应该有类似:“nil 类的未定义方法
”。这是正确的吗?如果是,请提供此错误。 -
想问一下这个错误是什么时候出现的。当您到达“users/new”或“users/create”处理验证错误之后?
-
在问题中添加一些堆栈跟踪?
-
@AlexanderSysuiev 刚刚更新了帖子:nil:NilClass 的未定义方法“错误”
-
好吧,我有两个假设: 1. @user 变量没有定义,所以它是 nil。该请求是从不同的控制器发送的,或者您未提供控制器的完整代码。要检查它,请在您的部分
@user2 中替换obj。obj是某种关键字。要检查它,请将其替换为error_model
标签: ruby-on-rails