Ruby on rails 测试嵌套控制器:NoMethodError:undefined方法“empty”和#x27;零级:零级

Ruby on rails 测试嵌套控制器:NoMethodError:undefined方法“empty”和#x27;零级:零级,ruby-on-rails,controller,factory-bot,rspec-rails,slug,Ruby On Rails,Controller,Factory Bot,Rspec Rails,Slug,我一直在努力让我的控制器测试通过。。。 我的路线.rb namespace :school do resource :account, :except => [:new, :create, :destroy], :controller => 'account' resources :classes, :path => "" do resources :discussions do resources :comments end resources

我一直在努力让我的控制器测试通过。。。 我的路线.rb

namespace :school do
  resource :account, :except => [:new, :create, :destroy], :controller => 'account'
  resources :classes, :path => "" do
   resources :discussions do
    resources :comments
  end
  resources :materials
end
end 
我的DiscussionController规格:

describe "POST 'create'" do
 before(:each) do
  @user = FactoryGirl.create(:coordinator_user)
  login_user(@user)
  @klass = FactoryGirl.build(:klass)
  @klass.creator = @user
  @klass.save
  @parameters = FactoryGirl.attributes_for(:discussion, :klass_id => @klass, :user_id => @user)
end

context "with valid parameters" do
  it "creates a new job" do
    expect { post :create, :class_id => @klass.id, :discussion => @parameters }.to   change(Discussion, :count).by(1)
  end

  it "should create a new discussion" do
    post :create, :class_id => @klass.id
    response.should be_redirect
    response.should redirect_to(school_account_path(assigns(:discussion).id))
    assigns(:discussion).should_not be_nil
    assigns(:discussion).should_not be_new_record
  end

end
我得到错误:1)NoMethodError:nil:NilClass#/lib/slug的未定义方法
empty?.rb:3:in
slug'
无法理解此处的“零”是什么。

如何调试??我试图打印PP@klass.id。。它会打印klass id。对在ROR中学习测试有什么建议吗?学习资源??你的模型看起来怎么样?您使用的是友好的_id gem,还是slug.rb是您自己的助手类?请您也发布相关代码。这是slug代码:def slug if not response_to?:name还是name.empty?id else“#{id}-#{name}”。到_url end def到_param slug end似乎,该名称为nil..这就是为什么会出现nil:NilClass错误。“名字”来自哪里?您可以将此方法放入您的模型中,然后实例和instance.name可用..我选中了pp discussion.name它不是nil。。。不知道这里什么是零??