Rotas de recursos aninhados
O curso trata de rotas de recursos aninhados no Rails, a partir das rotas de admin, dos controllers e do código-fonte do Rails de um app. Mostra como aninhar resources :lessons dentro de resources :courses acrescenta :course_id à URL. Aborda o shallow: true e as ações que ele achata, o resource singular sem :id e com controller de nome plural, e blocos member para uma ação reorder própria. Trata ainda de module: e scope module: para subdiretórios de controller e de por que o shallow achata recursos plurais aninhados e deixa os singulares aninhados.
O que você vai aprender
- ✓Como aninhar um recurso em outro acrescenta o id do pai à URL e aos params
- ✓Que ações o shallow: true mantém aninhadas e quais achata para um :id sozinho
- ✓Como rotas resource singulares ficam sem :id e levam a um controller de nome plural
- ✓Acrescentar ações próprias com blocos member, e a diferença para blocos collection
- ✓Usar module: e scope module: para pôr controllers em subdiretórios
- ✓Por que o shallow achata recursos plurais aninhados e não os singulares
Aninhando um recurso: colocando uma relação de "pertence a" na URL
Rotas Rails: fundamentos, antes nesta série, mostrou resources :courses, param: :slug, only: [ :show ], o roteamento deste app para as páginas públicas de curso. Toda chamada resources daquele curso é um recurso único e isolado; nenhuma das sete aulas põe um bloco resources dentro de outro. Aquele…
Ler a aula completa grátis →Currículo
7 aulasAninhando um recurso: colocando uma relação de "pertence a" na URL
Aninhar resources :lessons dentro de resources :courses acrescenta :course_id à URL, e o controller lê esse valor nos params.
resources :lessons, shallow: true: o motivo do Rails para a opção
A documentação do Rails explica o shallow: true, que mantém index, new e create aninhados e achata ações de membro para :id.
resource singular: nenhum :id no path, e um controller nomeado pelo plural
Rotas resource singulares não têm segmento :id, levam a controllers de nome plural e acham o registro pelo pai.
member do...end: uma ação própria sobre um registro
Um bloco member acrescenta a ação reorder própria com o id de um registro, e blocos collection acrescentam ações sem id.
module: e scope module: levando uma URL a um subdiretório de controller
As opções module: e scope module: mudam só o módulo do controller, sem alterar URLs nem nomes de helpers.
O shallow alcança um recurso plural aninhado, não um singular
O shallow achata a rota plural de images aninhada, mas deixa as rotas singulares challenge e quiz aninhadas com :lesson_id.
Juntando tudo: uma URL aninhada, seguida por todas as regras
A rota de reordenação de aulas é seguida da URL ao controller, aplicando a regra de cada aula anterior.