0

用户中的 NoMethodError#show

错误:nil:NilClass 的未定义方法“名称”

我一直在关注 Hartl 的 Rails 4.0 教程,现在我已经坚持了几天。该错误将第 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
4

2 回答 2

2

您的代码中有两个问题:

第一:你有两个函数命名new,第一个应该是show

second:您在第二个功能的末尾错过end了(将其从控制器的结尾移开)

于 2013-09-10T11:56:09.310 回答
1

您可能没有设置@user实例变量。你应该在你的控制器中有:

def show
  @user = User.find(params[:id])
end
于 2013-09-10T11:55:06.030 回答