【发布时间】:2013-07-24 04:26:12
【问题描述】:
我正在尝试修复多态嵌套资源的默认测试并遇到很多问题。我敢打赌,有一个简单的解决方案,这个新手还没有搞定。任何帮助都将一如既往地感激不尽。
我的模特:
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) 错误: test_should_get_edit(NamesControllerTest): ActionController::RoutingError: 没有路由匹配 {: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:inrescue in generate' /usr/local/rvm/gems/ruby-1.9.3-p392/gems/actionpack-3.2.13/lib/action_dispatch/routing/route_set.rb:532:ingenerate' /usr/local/rvm/gems/ruby-1.9.3-p392/gems/actionpack-3.2.13/lib/action_dispatch/routing/route_set.rb:573:ingenerate' /usr/local/rvm/gems/ruby-1.9.3-p392/gems/actionpack-3.2.13/lib/action_dispatch/routing/route_set.rb:569:ingenerate_extras' /usr/local/rvm/gems/ruby-1.9.3-p392/gems/actionpack-3.2.13/lib/action_dispatch/routing/route_set.rb:565:inextra_keys' /usr/local/rvm/gems/ruby-1.9.3-p392/gems/actionpack-3.2.13/lib/action_controller/test_case.rb:153:inassign_parameters' /usr/local/rvm/gems/ruby-1.9.3-p392/gems/actionpack-3.2.13/lib/action_controller/test_case.rb:465:inprocess' /usr/local/rvm/gems/ruby-1.9.3-p392/gems/actionpack-3.2.13/lib/action_controller/test_case.rb:49:inprocess' /usr/local/rvm/gems/ruby-1.9.3-p392/gems/actionpack-3.2.13/lib/action_controller/test_case.rb:392:inget' /Users/mkenney/hraccess/test/functional/names_controller_test.rb:43:in `block in'
如果我在非嵌套路由中添加回名称,则会运行这些错误。我如何告诉测试它是一个嵌套资源并且这与多态关系有什么关系,或者仅仅是让我失望的噪音?
提前感谢您为这个新手提供的任何帮助!
标记
【问题讨论】:
标签: ruby-on-rails ruby-on-rails-3 ruby-on-rails-3.2