2013-12-10 6 views
1

У меня естьПростые Rails перенаправляет вопросы

resources :calendars do 

    resources :blocked_times 

end 

Что такое вспомогательный метод, который будет генерировать /calendar/:calendar_id/blocked_times?

Я попытался calendar_blocked_time_path(@calendar.id), но это дало мне:

/calendar/:calendar_id/blocked_times/:blocked_time_id 

И на: blocked_time_id по умолчанию настроен на 1.

ответ

2

С тех маршрутах, на месте запуска rake routes и вы получите выход имен маршруты.

Хотя я думаю, что в этом случае вы ищете:

calendar_blocked_times_path(@calendar) 

Я не проверял это, но в основном для действия индекса требуется множественное число для второго ресурса.

+0

чувак ур гений – 755

+0

Спасибо, bro :) Маршруты могут немного согнуть ум. Не стесняйтесь принять ответ, если он сработает для вас: D –

3

Поскольку у вас есть вложенное маршрут, вам нужно более одного аргумента calendar_blocked_time_path для того, чтобы направить на правильный BlockTime:

calendar_block_time_path(@calendar, @blocked_time) 

Если вы хотите, чтобы получить index действие для BlockTimesController, используйте следующий путь, проходя толькоCalendarid:

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.

+1

Хм, как вы его получите, чтобы отобразить вспомогательную функцию рядом с ней? Когда я набираю маршруты, все, что я получаю, это тип метода HTTP и формат URL – 755

+1

Хм ... возможно, что вы находитесь в маленьком терминальном окне или часть вашего окна терминала не отображается. Вы пытались скопировать и вставить содержимое «рейк-маршрутов», чтобы проверить, печатается ли всего содержимого? – zeantsoi

+1

Да, 755, возможно, увеличить окно вашего терминала (более длинные маршруты будут обертываться на несколько строк, которые могут смутить вещи). –

Смежные вопросы