Controllers com namespace
Este curso lê as rotas de admin e de execution de um app Rails e segue cada uma até o arquivo do controller. Ele mostra como namespace :admin do ... end acrescenta um prefixo de URL e um módulo Admin::, e como namespaces aninhados somam um segmento e um nível de módulo por bloco. Trata da opção module:, de scope module: junto com shallow: true e da forma explícita to: "caminho#action". Mostra ainda um namespace de três níveis, execution/api/v1, e separa namespace de herança de classes. Um desafio em Ruby puro fecha o curso.
O que você vai aprender
- ✓Como blocos namespace acrescentam prefixo de URL e módulo de controller
- ✓Como namespaces aninhados fazem a URL e o módulo crescerem um nível por vez
- ✓Como module: e scope module: mudam o caminho do controller sem mexer na URL
- ✓Como shallow: true tira o prefixo do pai das URLs de ações de membro
- ✓Como to: "caminho#action" nomeia controller e ação de forma explícita, com constraints: para nomes de arquivo
- ✓Por que aninhar namespaces e herdar classes são decisões separadas
O que namespace :admin do ... end gera
O config/routes.rb deste app abre a seção de admin com:
Ler a aula completa grátis →Currículo
7 aulasO que namespace :admin do ... end gera
Mostra como namespace :admin põe o prefixo /admin nas URLs e espera controllers no módulo Admin::.
Aninhando namespaces: admin, depois catalog, dentro dele
Aninha catalog dentro de admin, somando um segmento de URL e um nível de módulo por bloco.
A opção module: roteando para um subdiretório sem segmento na URL
Usa module: :courses para levar o recurso cover a um controller mais fundo sem mudar a URL.
module: mais um recurso raso: a maior separação entre URL e módulo deste app
Junta scope module: :lessons com shallow: true: a URL do destroy perde lessons, mas leva a Lessons::ImagesController.
to: "caminho/do#action": sem namespace nem module:
Trata de to: "caminho#action" nas rotas de reordenação e numa rota de imagem com restrição por regex.
Três níveis: execution, api, v1
Segue os namespaces execution, api e v1 até Execution::Api::V1::SandboxController e separa aninhamento de herança.
Juntando tudo: um destino, três formas de apontar pra ele
Revisa as três técnicas de roteamento e fecha com um desafio em Ruby puro que monta nomes de controller.