Ruby on rails 多态嵌套资源的测试

Ruby on rails 多态嵌套资源的测试,ruby-on-rails,ruby-on-rails-3,ruby-on-rails-3.2,Ruby On Rails,Ruby On Rails 3,Ruby On Rails 3.2,我试图修复多态嵌套资源的默认测试,但遇到了很多问题。我打赌有一个简单的解决方案,这个新手还没有完全明白。我们将一如既往地感谢您的帮助 我的模型: class Member < ActiveRecord::Base has_many :names, as: :person has_many :dependents attr_accessible :active, :deleted end class Name < ActiveRecord::Base belon

我试图修复多态嵌套资源的默认测试,但遇到了很多问题。我打赌有一个简单的解决方案,这个新手还没有完全明白。我们将一如既往地感谢您的帮助

我的模型:

class Member < ActiveRecord::Base
  has_many :names, as: :person
  has_many :dependents

 attr_accessible :active, :deleted
 end

 class Name < ActiveRecord::Base
   belongs_to :person, polymorphic: true

    attr_accessible :dob, :dod, :first, :gender, :last, :mi, :prefix, :relation, :suffix
 end
示例测试:

 require 'test_helper'

class NamesControllerTest < ActionController::TestCase
 setup do
  @name = names(:one)
  @person = members(:one)
 end

test "should get edit" do
  get :edit, id: @name
   assert_response :success
 end
 end
需要“测试助手”
类NamesControllerTest
我收到的错误信息:

3) 错误: 测试应得到编辑(名称控制器测试): ActionController::RoutingError:没有路由匹配{:id=>“980190962”,:person\u id=>“980190962”,:controller=>“名称”,:action=>“编辑”} /usr/local/rvm/gems/ruby-1.9.3-p392/gems/actionpack-3.2.13/lib/action\u调度/路由/路由设置。rb:544:in
raise\u路由错误'
/usr/local/rvm/gems/ruby-1.9.3-p392/gems/actionpack-3.2.13/lib/action\u dispatch/routing/route\u set.rb:540:in
rescue in generate' /usr/local/rvm/gems/ruby-1.9.3-p392/gems/actionpack-3.2.13/lib/action\u dispatch/routing/route\u set.rb:532:in
generate'
/usr/local/rvm/gems/ruby-1.9.3-p392/gems/actionpack-3.2.13/lib/action\u dispatch/routing/route\u set.rb:573:in
generate' /usr/local/rvm/gems/ruby-1.9.3-p392/gems/actionpack-3.2.13/lib/action\u dispatch/routing/route\u set.rb:569:in
generate\u extra'
/usr/local/rvm/gems/ruby-1.9.3-p392/gems/actionpack-3.2.13/lib/action\u调度/路由/路由设置。rb:565:in
extra\u key' /usr/local/rvm/gems/ruby-1.9.3-p392/gems/actionpack-3.2.13/lib/action\u controller/test\u case.rb:153:in
assign\u参数
/usr/local/rvm/gems/ruby-1.9.3-p392/gems/actionpack-3.2.13/lib/action\u controller/test\u case.rb:465:in
process' /usr/local/rvm/gems/ruby-1.9.3-p392/gems/actionpack-3.2.13/lib/action\u controller/test\u case.rb:49:in
process'
/usr/local/rvm/gems/ruby-1.9.3-p392/gems/actionpack-3.2.13/lib/action\u controller/test\u case.rb:392:in
get' /Users/mkenney/hraccess/test/functional/names\u controller\u test.rb:43:in'block in'

如果我在非嵌套路由中重新添加这些名称,则会运行这些错误。我如何告诉测试它是一个嵌套的资源,这是否与多态关系有关,或者这只是让我感到厌烦的噪音

提前感谢您为这个新手提供的任何帮助


Mark

我需要添加成员id以获得正确的路线,我相信:

test "should get edit" do
  get :edit, member_id: @person, id: @name
  assert_response :success
end
test "should get edit" do
  get :edit, member_id: @person, id: @name
  assert_response :success
end