Что это за сообщение об ошибке? - PullRequest
0 голосов
/ 27 ноября 2011

Я работаю над главой 11 RailsTutorial Майкла Хартла, и я получил это сообщение об ошибке, пытаясь показать микросообщений пользователя при попытке создать клон Twitter. Какое имя модели имеет в виду, когда говорится «Неопределенный метод« имя-модели »для NilClass: Class?

undefined method `model_name' for NilClass:Class

Extracted source (around line #10):

7:       </h1>
8:     <% unless @user.microposts.empty? %>
9:         <table class="microposts" summary="User microposts">
10:           <%= render @microposts %>
11:         </table>
12:         <%= will_paginate @microposts %>
13:       <% end %>

Редактировать В действии я установил @microposts:

@microposts = @user.microposts.paginate(:page => params[:page])

* Редактировать * Код контроллера

class UsersController < ApplicationController

before_filter :authenticate, :only => [:index, :edit, :update]
before_filter :correct_user, :only => [:edit, :update]
before_filter :admin_user, :only => :destroy

  def show
    @user = User.find(params[:id])
    @microposts = @user.microposts.paginate(:page => params[:page])
    @title = @user.name
  end

  def new
    @user = User.new
    @title = "Sign up"
  end

  def create
    @user = User.new(params[:user])
    if @user.save
      sign_in @user
      flash[:success] = "Welcome to the Sample App!"
      redirect_to @user
    else
      @title = "Sign up"
      render 'new'
    end
  end

   def edit

    @title = "Edit user"
   end

   def update
    @user = User.find(params[:id])
    if @user.update_attributes(params[:user])
      flash[:success] = "Profile updated."
      redirect_to @user
    else
      @title = "Edit user"
      render 'edit'
    end
  end

  def index
    @title = "All users"
    @users = User.paginate(:page => params[:page])
  end

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

  def destroy
    User.find(params[:id]).destroy
    flash[:success] = "User destroyed."
    redirect_to users_path
  end

  private

    def authenticate
      deny_access unless signed_in?
    end

     def correct_user
      @user = User.find(params[:id])
      redirect_to(root_path) unless current_user?(@user)
    end

     def admin_user
      redirect_to(root_path) unless current_user.admin?
    end

end

1 Ответ

1 голос
/ 27 ноября 2011

Трудно сказать, в чем проблема, не видя полного исходного кода, но вы могли бы отследить проблему, сравнив ваш источник с эталонным кодом на GitHub .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...