O Rails permite que você particione diferentes áreas do sistema, agrupando os controllers em subdiretórios.
por exemplo: /admin ou /admin/articles etc
O Ruby on Rails utiliza o seguinte mapeamento entre URLs e os controllers:
http://www.url.com/application/mycontroller/myaction/id
Isso mapeia um controller (uma classe) chamada “mycontroller” que contém um método chamado “myaction”.
Para ter subdiretórios como
http://www.url.com/application/mycontroller/mysubcontroller/myaction/id
Você pode criar um subdiretório no diretório controller (neste caso, chamado “mycontroller”) e criar uma arquivo chamado “mysubcontroller_controller.rb”. A declaração da classe deve conter Mycontroller::MysubcontrollerController < ApplicationController.
Se você quiser criar um controlador chamado “articles” no subdiretório “admin”, você deve fazer:
- Criar o subdiretório “admin” no diretório “controller”
- Criar o arquivo “articles_controller.rb” no diretório “controllers/admin”
- Declarar a classe da seguinte maneira: Admin::ArticlesController < ApplicationController
Será necessário também criar os arquivos .rhtml nos subdiretórios correspondentes no diretório de view.
Bernardo Pádua respondeu em 11 Abr 2007 às 16:15 #
Tem um detalhe: O que vc chamou de MyControler na verdade é um Module (modulo) do Ruby, não é uma classe e portanto não é um controlador. É parecido com um Namespace de Java. O que o Rails permite é que vc agrupe os controladores em módulos e utilize esta convenção. Na prática o que vc disse está correto.
Outro detalhe: Esta convenção de URLs pode ser facilmente alterada. Em suma podemos criar URLs da forma que quisermos que chamem os controlers que quisermos. O Rails é bem configurável neste sentido. Este fato pode ser útil, pois podemos traduzir os URLs para português ou outros idiomas.
Firefox respondeu em 14 Abr 2007 às 11:26 #
Subdiretórios No Rails…
A look at subdirectories configuration with Ruby on Rails…….