我有
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。
答案 0 :(得分:3)
由于您有一个嵌套路线,因此您需要多个calendar_blocked_time_path
参数才能路由到正确的BlockTime
:
calendar_block_time_path(@calendar, @blocked_time)
如果您希望获得index
的{{1}}操作,请使用以下路径,仅传递 BlockTimesController
Calendar
:< / p>
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
的{{1}}。
答案 1 :(得分:2)
使用这些路线运行rake routes
,您将获得路线名称的输出。
虽然我认为在这种情况下你正在寻找:
calendar_blocked_times_path(@calendar)
我没有对此进行过测试,但基本上对于索引操作,你想要第二个资源的复数。