2013-07-24 72 views
0

我正在尝试修复多态嵌套资源的缺省测试并且遇到很多问题。我敢打赌,有一个简单的解决方案,这个新手只是还没有包裹他的头。任何帮助将不胜感激一如既往。测试多态嵌套资源

我的模型:

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 

的routes.rb:

resources :dependents do 
    resources :names 
    end 

    resources :members do 
    resources :names 
    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 

错误我收到:

3) Error: test_should_get_edit(NamesControllerTest): ActionController::RoutingError: No route matches {:id=>"980190962", :person_id=>"980190962", :controller=>"names", :action=>"edit"} /usr/local/rvm/gems/ruby-1.9.3-p392/gems/actionpack-3.2.13/lib/action_dispatch/routing/route_set.rb:544:in raise_routing_error' /usr/local/rvm/gems/ruby-1.9.3-p392/gems/actionpack-3.2.13/lib/action_dispatch/routing/route_set.rb:540:in rescue in generate' /usr/local/rvm/gems/ruby-1.9.3-p392/gems/actionpack-3.2.13/lib/action_dispatch/routing/route_set.rb:532:in generate' /usr/local/rvm/gems/ruby-1.9.3-p392/gems/actionpack-3.2.13/lib/action_dispatch/routing/route_set.rb:573:in generate' /usr/local/rvm/gems/ruby-1.9.3-p392/gems/actionpack-3.2.13/lib/action_dispatch/routing/route_set.rb:569:in generate_extras' /usr/local/rvm/gems/ruby-1.9.3-p392/gems/actionpack-3.2.13/lib/action_dispatch/routing/route_set.rb:565:in extra_keys' /usr/local/rvm/gems/ruby-1.9.3-p392/gems/actionpack-3.2.13/lib/action_controller/test_case.rb:153:in assign_parameters' /usr/local/rvm/gems/ruby-1.9.3-p392/gems/actionpack-3.2.13/lib/action_controller/test_case.rb:465:in process' /usr/local/rvm/gems/ruby-1.9.3-p392/gems/actionpack-3.2.13/lib/action_controller/test_case.rb:49:in process' /usr/local/rvm/gems/ruby-1.9.3-p392/gems/actionpack-3.2.13/lib/action_controller/test_case.rb:392:in get' /Users/mkenney/hraccess/test/functional/names_controller_test.rb:43:in `block in '

如果我在非嵌套路由中重新添加这些运行错误的名称。我如何告诉测试它是一个嵌套的资源,并且这与多态关系有什么关系,还是仅仅是将我抛弃的噪声?

在此先感谢您的帮助,您可以提供这个新手!

马克

回答

0

我需要添加member_id得到适当的路线,我相信:

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