首页 > 解决方案 > 将 2 个对象传递给 RSpec 中的命名路由

问题描述

在我的 RSpec 测试中,我做了: delete recurring_events_path(@group, @recurring_event),但这会产生DELETE "/groups/705777939/recurring_events.496

我应该如何制作论点以recurring_events_path使其产生/groups/705777939/recurring_events/496

路线.rb

 45   resources :groups, except: %i[new edit]
 [snipp..]
 56   scope "groups/:group_id" do
 57     resources :posts, except: %i[new edit]
 58     put "posts/:id/pin", to: "posts#pin"
 59
 60     resources :recurring_events, except: %i[show]
 61     get "recurring_events/upcoming" => "recurring_events#upcoming", as: :upcoming
 62     get "recurring_events/past" => "recurring_events#past", as: :past
 63
 64     scope "/posts/:post_id" do
 65       resources :comments, except: %i[new edit]
 66     end
 67   end

$ rake 路线

recurring_events GET    /groups/:group_id/recurring_events(.:format)            recurring_events#index
                 POST   /groups/:group_id/recurring_events(.:format)            recurring_events#create
                 PATCH  /groups/:group_id/recurring_events/:id(.:format)        recurring_events#update
                 PUT    /groups/:group_id/recurring_events/:id(.:format)        recurring_events#update
                 DELETE /groups/:group_id/recurring_events/:id(.:format)        recurring_events#destroy

标签: ruby-on-railsrspecroutesrspec-rails

解决方案


recurring_events_path这里代表你的#index路线

如果您resource在路线中使用,则路径应该是destroy_recurring_events_path. 否则,您需要as:在路由声明中指定选项。像as: :destroy_recurring_events

rake routes您可以使用命令查看路由的别名


推荐阅读