Учитывая этот надуманный пример:
RSpec.describe City::Road::HouseController, type: :controller do
let(:house) { create :house }
describe 'index' do
context 'a request is received without a valid basic-auth header' do
it 'renders unauthorized' do
before { method_that_unsets_basic_auth_header }
get(:index, params: { house_id: house.id })
expect(response).to have_http_status(:unauthorized)
end
end
end
end
со следующими маршрутами:
namespace :city do
namespace :road do
resources :location, only: %i[show index] do
resources :house, only: %i[index], on: :member
end
end
end
Почему я продолжаю получать эту ошибку?:
ActionController::UrlGenerationError:
No route matches {:action=>"index", :controller=>"city/road/house :house_id=>1}
I думаю, это потому, что он игнорирует location
.
Я ожидаю, что маршрут будет:
/city/road/location/:location_id/house
Я смотрел на следующие вопросы / ответы, но ни один из они помогли (хотя я признаю, что, возможно, что-то упустил):
- Как тестировать контроллеры с вложенными маршрутами, используя rspe c
- Rails Rspe c тестирование контроллера с вложенными ресурсами
- RSpe c контроллер для вложенных ресурсов, before_action