2012-12-27 76 views
0

我是新来的铁轨,并试图在我的头创建一个链接登录/退出配置文件。我不是用下面的代码的问题,特别是加粗(**)面积:nomethoderror导轨布局

<body> 
<div class="navbar navbar-fixed-top"> 
    <div class="navbar-inner"> 
     <div class="container"> 
      <a href="#" class="brand"> Test App</a> 
      <ul class="nav"> 
     <li><%= link_to "All Statuses", statuses_path %></li> 
     </ul> 
     <ul class="nav pull-right"> 
     **<li><%= link_to current_user.full_name, "#" %></li>** 

     </ul> 
     </div> 
    </div> 
</div> 
<div class="container"> 
<p class="notice"><%= notice %></p> 
    <p class="alert"><%= alert %></p> 
    <%= yield %> 
</div> 

我不断收到一个错误,指出:

NoMethodError在以下状态#指数

显示/用户/ test_app /应用/视图/布局/ application.html.erb其中行#18提出:

未定义的方法`FULL_NAME”的零:NilClass 提取的源(围绕线#18):

<li><%= link_to "All Statuses", statuses_path %></li> 
     </ul> 
     <ul class="nav pull-right"> 
     <li><%= link_to current_user.full_name, "#" %></li> 

     </ul> 
    </div> 

状态控制器代码是:

class StatusesController < ApplicationController 
# GET /statuses 
# GET /statuses.json 
    def index 

@statuses = Status.all 
respond_to do |format| 
    format.html # index.html.erb 
    format.json { render json: @statuses } 
end 
    end 

# GET /statuses/1 
    # GET /statuses/1.json 
    def show 
    @status = Status.find(params[:id]) 

    respond_to do |format| 
     format.html # show.html.erb 
     format.json { render json: @status } 
    end 
    end 

    # GET /statuses/new 
    # GET /statuses/new.json 
    def new 
    @status = Status.new 

    respond_to do |format| 
     format.html # new.html.erb 
     format.json { render json: @status } 
    end 
    end 

    # GET /statuses/1/edit 
    def edit 
    @status = Status.find(params[:id]) 
    end 

    # POST /statuses 
    # POST /statuses.json 
    def create 
    @status = Status.new(params[:status]) 

    respond_to do |format| 
     if @status.save 
     format.html { redirect_to @status, notice: 'Status was successfully created.' } 
     format.json { render json: @status, status: :created, location: @status } 
     else 
     format.html { render action: "new" } 
     format.json { render json: @status.errors, status: :unprocessable_entity } 
     end 
    end 
    end 

    # PUT /statuses/1 
    # PUT /statuses/1.json 
    def update 
    @status = Status.find(params[:id]) 

    respond_to do |format| 
     if @status.update_attributes(params[:status]) 
     format.html { redirect_to @status, notice: 'Status was successfully updated.' } 
     format.json { head :no_content } 
     else 
     format.html { render action: "edit" } 
     format.json { render json: @status.errors, status: :unprocessable_entity } 
     end 
    end 
    end 

    # DELETE /statuses/1 
    # DELETE /statuses/1.json 
    def destroy 
    @status = Status.find(params[:id]) 
    @status.destroy 

    respond_to do |format| 
     format.html { redirect_to statuses_url } 
     format.json { head :no_content } 
    end 
    end 
end 
+2

请出示确切的错误文本,并也是状态控制器中索引方法的控制器代码。 –

+0

我已更新状态控制器和错误文本。谢谢@MichaelDurrant – cbm3690

回答

1

在你叫current_user.full_name的观点,但current_usernil和方法不能它被调用。 你可以做的是以下几点:

<ul class="nav pull-right"> 
    <% if current_user %> 
    <li><%= link_to current_user.full_name, "#" %></li> 
    <% end %> 
</ul> 

这将只显示当用户登录您的链接(这意味着current_user将返回用户实例,而不是nil