明确定义的Rails路由问题 - Nil:NilClass的未定义方法

时间:2010-05-21 00:37:15

标签: ruby-on-rails routing controller

我一直在研究这个问题,但仍然没有快乐。这是我在这个一般范围内的第二个问题,因为最后一个问题太长了,现在这个问题已经定义得很明确了。

问题摘要:

我正在为我的客户加载一个页面,我收到错误:

undefined method 'name' for Nil:NilClass

我的代码

#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 %>

我完全不知道为什么这个看似清晰的事件序列导致了NilClass。在控制台中搜索Customer.find(2)返回正确的客户。这个菜鸟缺少什么?非常感谢你。

1 个答案:

答案 0 :(得分:3)

您在设置@customer之前渲染视图,因此它是零。请尝试以下方法:

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