Я следую учебному пособию, в котором мы создаем и обновляем учетные записи пользователей, и я застрял в части редактирования, так как при попытке загрузить страницу редактирования для пользователя я получаю ошибку метода, как показано ниже:
Showing /home/ubuntu/rails_projects/alpha_blog/app/views/shared/_errors.html.erb where line #1 raised:
undefined method `errors' for nil:NilClass
Extracted source (around line #1):
1
2
3
4
5
6
<% 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">
Trace of template inclusion: app/views/users/_form.html.erb, app/views/users/edit.html.erb
Rails.root: /home/ubuntu/rails_projects/alpha_blog
Application Trace | Framework Trace | Full Trace
app/views/shared/_errors.html.erb:1:in `_app_views_shared__errors_html_erb__3874437342468649522_70028100096200'
app/views/users/_form.html.erb:1:in `_app_views_users__form_html_erb__2653828291511096048_70028100213300'
app/views/users/edit.html.erb:4:in `_app_views_users_edit_html_erb___925607472456440074_70028151623400'
Request
Parameters:
{"id"=>"2"}
Toggle session dump
Toggle env dump
Response
Headers:
None
Вот мой пользовательский контроллер:
class UsersController < ApplicationController
def new
@user= User.new
end
def create
@user = User.new(user_params)
if @user.save
flash[:success] = "Welcome to the alpha blog #{@user.username}"
redirect_to articles_path
else
render 'new'
end
end
private
def user_params
params.require(:user).permit(:username, :email, :password)
end
def edit
@user = User.find(params[:id])
end
def update
@user = User.find(params[:id])
if @user.update(user_params)
flash[:success] = "Your account was updated successfully"
redirect_to articles_path
else
render 'edit'
end
end
end
Так как я инициализировал переменную @user в классе редактирования, я думал, что это будет работать.