Передача 2 объектов на именованный маршрут в RSpec - PullRequest
0 голосов
/ 28 ноября 2018

В моем тесте RSpec я делаю: delete recurring_events_path(@group, @recurring_event), но это дает DELETE "/groups/705777939/recurring_events.496

Как мне перевести аргументы в recurring_events_path так, чтобы он вывел /groups/705777939/recurring_events/496?

rout.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

$ рейк-маршруты

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

Ответы [ 3 ]

0 голосов
/ 28 ноября 2018

Измените свой маршрут, чтобы использовать вложенные ресурсы, например так:

 resources :groups, except: %i[new edit]
   resources :posts, except: %i[new edit]
     resources :comments, except: %i[new edit] #be careful with this, tree levels of nesting is not recommended, I would move this out of the "group" namespace
     member do
       put :pin
     end
   end

   resources :recurring_events, except: %i[show] do
     collection do
       get :upcoming
       get :past
     end
   end
 end

Теперь rake routes должен предоставить вам все маршруты с его именами.

Подробнее о документации: https://guides.rubyonrails.org/routing.html#nested-resources

0 голосов
/ 29 ноября 2018

Вам просто нужно использовать recurring_event_path в качестве единственного события вместо recurring_events_path

0 голосов
/ 28 ноября 2018

recurring_events_path здесь обозначает ваш #index маршрут

Если вы используете resource в маршрутах, путь должен быть destroy_recurring_events_path.В противном случае вам нужно указать опцию as: в объявлении маршрута.Как и as: :destroy_recurring_events

Вы можете увидеть псевдонимы для маршрутов, используя rake routes command

...