“用户中的NoMethodError#show”Hartl第7章

时间:2013-09-10 11:44:37

标签: ruby ruby-on-rails-3 ruby-on-rails-4

用户中的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

2 个答案:

答案 0 :(得分:2)

您的代码中存在两个问题:

首先:您有两个名为new的函数,第一个函数应为show

:你在第二个函数的末尾错过了end(从控制器的结尾移开)

答案 1 :(得分:1)

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

def show
  @user = User.find(params[:id])
end