2016-03-25 3 views

ответ

1

Я рекомендую следовать за рельсами oficial guides. Считается хорошей практикой, чтобы избежать вложенности ресурсов более чем на 1 уровень. Тем не менее, если вам действительно нужен этот уровень гнездования, вы можете использовать опцию shallow. таким образом, по крайней мере, ваши маршруты будут более чистыми. Как отмечается в документации, упоминавшееся выше:

Один способ избежать глубокой вложенности (как рекомендовано выше), чтобы произвести действия по сбору контекстными под родителем, с тем, чтобы получить чувство иерархии, а не гнездо действия участника. Другими словами, только строить маршруты с минимальным количеством информации, чтобы однозначно идентифицировать ресурс

Вы могли бы попробовать что-то вроде этого:

resources :courses, shallow: true do 
    resources :sections, shallow: true do 
    resources :lessons, shallow: true do 
     resources :sub_lessons 
    end 
    end 
end 

Просто поиграйте с этим немного и использовать rake routes для посмотрите, как выглядят ваши маршруты.

Однако, что вы должны спросить себя, например, мне нужно, чтобы уроки шли по разделам? Может быть, лучше, чтобы разделить их, что-то вроде:

resources :courses do 
    resources :sections 
end 

resources :lessons do 
    resources :sub_lessons 
end 

Все зависит от объема вам нужно, в каком действии, например, если при определенном действии, вам нужно ограничить уроки, основанные на курсах, но не в секциях, то вам потребуется только идентификатор курса, переданный как параметр.

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