Поскольку у вас есть вложенное маршрут, вам нужно более одного аргумента calendar_blocked_time_path
для того, чтобы направить на правильный BlockTime
:
calendar_block_time_path(@calendar, @blocked_time)
Если вы хотите, чтобы получить index
действие для BlockTimesController
, используйте следующий путь, проходя толькоCalendar
id
:
calendar_block_times_path(@calendar)
Обратите внимание, что, так как вы пытаетесь получить доступ к множественному ресурсу (в данном случае - блокировать), вы захотите вызвать форму плюрализации ресурса - то есть calendar_block_times
.
Помните, что вы всегда можете запустить rake routes
из командной строки, чтобы получить полный набор маршрутов и соответствующие им пути. Вот результат в вашем случае:
calendar_blocked_times GET /calendars/:calendar_id/blocked_times(.:format) blocked_times#index
POST /calendars/:calendar_id/blocked_times(.:format) blocked_times#create
new_calendar_blocked_time GET /calendars/:calendar_id/blocked_times/new(.:format) blocked_times#new
edit_calendar_blocked_time GET /calendars/:calendar_id/blocked_times/:id/edit(.:format) blocked_times#edit
calendar_blocked_time GET /calendars/:calendar_id/blocked_times/:id(.:format) blocked_times#show
PUT /calendars/:calendar_id/blocked_times/:id(.:format) blocked_times#update
DELETE /calendars/:calendar_id/blocked_times/:id(.:format) blocked_times#destroy
calendars GET /calendars(.:format) calendars#index
POST /calendars(.:format) calendars#create
new_calendar GET /calendars/new(.:format) calendars#new
edit_calendar GET /calendars/:id/edit(.:format) calendars#edit
calendar GET /calendars/:id(.:format) calendars#show
PUT /calendars/:id(.:format) calendars#update
DELETE /calendars/:id(.:format) calendars#destroy
Как вы заметите, правильный путь к времени календарь блока является /calendars/:calendar_id/blocked_times/:id
. Первый аргумент, переданный в calendar_block_time_path
, - :calendar_id
, а второй аргумент - :id
, то есть id
из BlockTime
.
чувак ур гений – 755
Спасибо, bro :) Маршруты могут немного согнуть ум. Не стесняйтесь принять ответ, если он сработает для вас: D –