2014-04-10 38 views
-1

我有2個ID存儲在數據庫中。我沒有碰過'spec'文件夾。但仍然localhost:3000/users/1顯示此錯誤。未定義的方法名稱爲零:NilClass

undefined method `name' for nil:NilClass 
Extracted source (around line #1): 
1: <%= @user.name %>, <%= @user.email %> 

users_controller.rb

class UsersController < ApplicationController 

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

    def new 
    end 
end 

show.html.erb

<%= @user.name %>, <%= @user.email %> 

車型 - > users.rb的

class User < ActiveRecord::Base 
    attr_accessible :name, :email, :password, :password_confirmation 
    has_secure_password 

    before_save { |user| user.email = email.downcase } 

    validates :name, presence: true, length: { maximum: 50 } 
    VALID_EMAIL_REGEX = /\A[\w+\-.][email protected][a-z\d\-.]+\.[a-z]+\z/i 
    validates :email, presence: true, 
        format:  { with: VALID_EMAIL_REGEX }, 
        uniqueness: { case_sensitive: false } 
    validates :password, presence: true, length: { minimum: 6 } 
    validates :password_confirmation, presence: true 
end 
+0

是你的路由是否正確? '資源用戶' –

+4

檢查你的數據庫是否有'用戶'與'id = 1'。你也可以用應用程序日誌更新'show'動作的問題。 –

+0

請粘貼您的應用程序日誌。 –

回答

-2

編輯show.html.erb像波紋管:

<%- if @user.present? %> 
    <%= @user.name %>, <%= @user.email %> 
<%end%> 

的問題的出現是由於@user爲零。所以yu應該檢查用戶的對象是否爲零。然後按照您的要求處理對象。

+0

是的,對,但這裏的主要問題是'@ user'是'nil'的原因,因爲它似乎是在控制器中設置的。另外,顯示空白顯示頁面並不是一個好習慣。 –

+0

@MarekLipka,在控制器中,如果沒有找到id的用戶,則編寫從不處理異常的錯誤代碼。那麼通過編寫上面的代碼,你期望的解決方案是什麼?您應該在控制器各自的操作或視圖中管理它。我只是建議你一個解決方案。而已。 –

+0

你的解決方案沒有解決任何問題,因爲這裏的問題是'@ user'是'nil'的原因。另外,在'show'動作中,如果沒有給定id的記錄,則應該拋出錯誤。你的解決方案嘗試只是給用戶一個空白頁面,他甚至不知道發生了什麼。 –

相關問題