Ruby on rails 后钩子命名错误:未定义的方法'each';对于nil:NilClass(AngularJS)

Ruby on rails 后钩子命名错误:未定义的方法'each';对于nil:NilClass(AngularJS),ruby-on-rails,postgresql,rspec,angularjs,database-cleaner,Ruby On Rails,Postgresql,Rspec,Angularjs,Database Cleaner,我将Rails 3.2.13与postgres、rspec 2.13、capybara 2.0.3和database_cleaner 0.9.1一起使用。我也在用AngularJS。我有一个js:true规范,它测试表单的提交(创建一个标准rails模型实例)。唯一可能不是标准Rails的是,我使用AngularJS通过Ajax提交此表单。无论何时运行规范,都会出现以下错误: An error occurred in an after hook NoMethodError: undefine

我将Rails 3.2.13与postgres、rspec 2.13、capybara 2.0.3和database_cleaner 0.9.1一起使用。我也在用AngularJS。我有一个js:true规范,它测试表单的提交(创建一个标准rails模型实例)。唯一可能不是标准Rails的是,我使用AngularJS通过Ajax提交此表单。无论何时运行规范,都会出现以下错误:

An error occurred in an after hook
  NoMethodError: undefined method `each' for nil:NilClass
  occurred at /Users/morgler/.rvm/gems/ruby-1.9.3-p194@pennyworth/gems/activerecord-    3.2.13/lib/active_record/associations/collection_association.rb:310:in `replace'
该规范随后失败。在我看来,当数据库运行时,这个错误发生在after钩子中。我在spec_helper.rb中得到了这个:

config.before(:each) do
  if Capybara.current_driver == :rack_test
    DatabaseCleaner.strategy = :transaction
  else
    DatabaseCleaner.strategy = :truncation
  end
  DatabaseCleaner.start
end

config.after(:each) do
  DatabaseCleaner.clean
end
单击表单的提交按钮后,通过AngularJS提交表单的代码为:

$scope.saveOrderProcess = (event) ->
  if $scope.orderProcess.id
    $scope.orderProcess.$update()
  else
    OrderProcess.create($scope.orderProcess)

你知道我在这里遗漏了什么吗?

我的问题根源似乎完全不同:

我使用的是深度嵌套对象(order\u进程有order\u步骤有option\u项)。Rails需要将这些嵌套对象称为“option\u items\u attributes”等等。看起来,在我的散列的某个深处,我未能将“选项项”转换为“选项项步骤”