2010-05-21 5 views
0

J'ai travaillé sur ce problème pendant un moment mais toujours pas de joie. C'est ma deuxième question dans ce domaine général, car la dernière question devenait trop longue et elle est maintenant mieux définie.Problème de routage Rails clairement défini - méthode non définie pour Nil: NilClass

Résumé du problème:

Je chargement d'une page pour mes clients et j'obtiens l'erreur:

undefined method 'name' for Nil:NilClass 

Mon code

#Link on views/users/show.html.erb: 
<%= link_to "Customer Account", :action => "home", :controller => "customers", :id => @user.user_type_id %> 

#Regular Route: 
map.connect 'customers/home/:id', :controller => 'customers', :action => 'home' 

#Rake Routes, first entry: 
/customers/home/:id :controller=>:"customers", :action=>"home" 

#Customers Controller: 
def home 
    render :layout => 'home' 
    @customer = Customer.find(params[:id]) 
    @user = @current_user_session.user 
    flash[:error] = "Customer not found" and return unless @customer 
    @jobs = @customer.jobs 
end 

#views/customers/home.html.erb: 
<%= @customer.name %> 

Je n'ai absolument pas idée pourquoi cette séquence apparemment claire des événements aboutit à une classeNil. Rechercher dans la console pour Customer.find (2) renvoie le bon client. Qu'est-ce que ce Noob manque? Merci beaucoup.

Répondre

3

Vous affichez la vue avant de définir @customer, elle est donc nulle. Essayez ce qui suit:

def home 
    @customer = Customer.find(params[:id]) 
    @user = @current_user_session.user 
    flash[:error] = "Customer not found" and return unless @customer 
    @jobs = @customer.jobs 
    render :layout => 'home' 
end 
+0

Parfait! Merci Greg. – sscirrus

Questions connexes