Маршрут действительно создан. Я думаю, что вы принимаете помощников за фактический маршрут.
GET /courses/:course_id/members(.:format) {:controller=>"members", :action=>"show"}
Я думаю, что ваше замешательство связано с тем, что у вас есть три помощника (course_members, new_course_members & edit_course_members), и у вас нет "show_course_members".
Rails создает только одного помощника для действий SHOW, UPDATE, DESTROY и CREATE, потому что вы можете отличить друг друга от вызванного метода HTTP.
АКЦИЯ | HTTP-метод
ПОКАЗАТЬ - ПОЛУЧИТЬ
ОБНОВЛЕНИЕ - PUT
CREATE - POST
УНИЧТОЖЕНИЕ - УДАЛЕНИЕ
Если вы вызываете course_members_path с помощью метода GET, Rails вызовет действие show.
Еще одна вещь, которую я заметил, однако: вы создаете ресурс только для одного участника (отсюда ресурс в singuler на router.rb). Один курс действительно имеет только один член?
Слово resource (в единственном числе) на routs.rb следует использовать, если у вас есть отношение has_one на контроллере.
Если у вас есть has_many , вам следует вместо этого использовать resources (множественное число).
Посмотрите на
http://guides.rubyonrails.org/routing.html#singular-resources
С уважением