Rails fornece roteamento RESTful para recursos. As rotas podem definir recursos únicos ou recursos plurais para gerar rotas da aplicação.
Existe uma diferença lógica que deve ser considerada quando selecionamos resource
ou resources
ao gerar roteadores.
Uso de recursos em rotas Rails
Vejamos as rotas geradas quando usamos resources
em rotas Rails.
HTTP Verbo | Caminho | Controlador#Acção | Utilizado para |
---|---|---|---|
GET | /produtos | produtos#index | display uma lista de todos os produtos |
GET | /produtos/novo | produtos#novo | retornar um formulário HTML para criar um novo produto |
POST | /produtos | produtos#criar | criar um novo produto |
GET | /produtos/:id | produtos#show | exibir um produto específico |
GET | /produtos/:id/edit | produtos#edit | retornar um formulário HTML para editar um produto |
PATCH/PUT | /produtos/:id | produtos#actualizar | actualizar um produto específico |
DELETE | /produtos/:id | produtos#destroy | apagar um produto específico |
Uso de recurso em rotas Rails
Vamos dar um exemplo de usuário profile
para um usuário logado no website usando a aplicação Rails.O perfil do usuário é suposto ser uma entidade (recurso) a ser trabalhada quando o usuário estiver logado. Não queremos que o usuário final conheça o perfil ID
do usuário. Assim,
- Para ver o perfil, route deve ser algo como
www.example.com/profile
- Para editar o perfil, route deve ser algo como
www.example.com/profile/edit
etc.
Podemos definir route para profile
resource como dado abaixo.
HTTP Verbo | Caminho | Controlador#Acção | Utilizado para |
---|---|---|---|
GET | /profile/novo | profiles#novo | retornar um HTML formulário para criar um novo perfil |
POST | /profile | profiles#criar | criar um novo perfil |
GET | /profile | profiles#show | display a perfil específico |
GET | /profile/edit | profiles#edit | retornar um formulário HTML para editar um perfil |
PATCH/PUT | /profile | profiles#update | actualizar um perfil específico |
DELETE | /profile | profiles#destroy | delete um perfil específico |
Vemos rotas de recursos singulares que não têm ID
do recurso.Além disso, ele ainda direciona pedidos para o nome do controlador pluralizado.
Guias de encaminhamento sugerem:,
Por vezes, você tem um recurso que os clientes sempre procuram sem referenciar um ID. Por exemplo, você gostaria /profile para sempre mostrar o perfil do usuário atualmente logado. Neste caso, você pode usar um recurso singular.