用户中的NoMethodError#show
错误:nil的未定义方法`name':NilClass
我一直在关注适用于Rails 4.0的Hartl的rails教程,现在我已经坚持了几天。该错误将第1行突出显示为“show.html.erb文件”中的问题。此外,ruby的'private'关键字不起作用,所以我在'users_controller.rb'中将其删除,这会停止错误。我会非常,非常感谢任何帮助。谢谢。
应用/视图/ show.html.erb
<% provide(:title, @user.name) %>
<div class="row">
<aside class="span4">
<section>
<h1>
<%= gravatar_for @user %>
<%= @user.name %>
</h1>
</section>
</aside>
</div>
users_controller.rb
class UsersController < ApplicationController
def new
@user = User.find(params[:id])
end
def new
@user = User.new
def create
@user = User.new(user_params)
if @user.save
flash[:success] = "Welcome to the Sample App!"
redirect_to @user
else
render 'new'
end
end
#private
def user_params
params.require(:user).permit(:name, :email, :password,
:password_confirmation)
end
end
end
答案 0 :(得分:2)
您的代码中存在两个问题:
首先:您有两个名为new
的函数,第一个函数应为show
。
秒:你在第二个函数的末尾错过了end
(从控制器的结尾移开)
答案 1 :(得分:1)
您可能没有设置@user
实例变量。你应该在你的控制器中:
def show
@user = User.find(params[:id])
end