2011-11-27 79 views
0

我正在研究Michael Hartl的RailsTutorial的第11章,并且我试图在尝试构建Twitter克隆时尝试显示用户的微博。它是指当它说的NilClass“未定义的方法‘模型名称’是什么型号名称:类这是什么错误信息?

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 
+2

是否有@microposts变量,还是@ user.microposts? –

+0

在用户控制器中,我们使用user.micropost创建了一个microposts变量。请参阅OP底部的更新。请注意,出于curisoity的原因,我在此视图中将microposts更改为user.microposts,现在错误消息提示:“users变量显示为空,您忘记将will_paginate的collection对象传递给该变量吗?” – Leahcim

+0

请发布控制器代码。 – jdl

回答

1

如果没有看到完整的源代码很难分辨出问题所在,但是您可能可以通过c把你的来源打到reference code at GitHub