Restful

1 resposta
romulosb

Galera, tenho estudado rails, e estou tentando abstrair o conceito de restfull e da lógica de negócios do model.
Para estudo, resolvi desenvolver um sistema ficticio de comprar, no estilo do mercado livre, ebay, etc?
Pois bem: Tenho três entidades: CategoriaProduto, SubCategoriaProduto e Produto.
Minha dúvida é na hora de criar um produto. Quero que o usuário clic em uma categoria, logo depois apareca todas as subcategorias para ele escolher, e depois a tela de cadastro do produto. Como ficaria essa organização a nível de controller?
No java eu criaria métodos para ir setando essas características no objeto Produto. Mas como rest diz que deve-se ter apenas as actions básicas, não consegui enchergar como fazer isso.

Agradeço desde já.

1 Resposta

DEAD

Abaixo você pode estudar um pouco mais do MVC em ação em conjunto com os Routes do Rails. O que te dará uma noção sobre como mapear os recursos para usar em conjunto com o REST.
http://ruby.railstutorial.org/chapters/a-demo-app#sec:mvc_in_action

No Rails você teria um modelo individual para cada uma das classes que você disse(CategoriaProduto, SubCategoriaProduto e Produto).
Acredito que seus modelos ficariam mais ou menos assim:
CategoriaProduto(model):

SubCategoriaProduto(model):

Produto(model):

Enquanto ao seu controller, você pode criar um controller para popular os dados independente dos models. Quando você não utiliza o Scaffold você pode mapear seus recursos de uma maneira mais flexível.
Eu utilizaria esse cadastro no controller de Produto(pois você estará fazendo um cadastro de produto, e você já terá suas SubCategorias e Categorias com dados pré populados). Dai é só fazer as validações na view para ir mostrando os items assim que você for escolhendo(no seu caso escolher uma Categoria em um drop-box ou via ajax, liberar a SubCategoria para ser buscada, depois isso liberar a partial contendo o cadastro de Produtos para ser populado).
Ex:

@categoriaprodutos.subcategoriaprodutos.each do |subcate|
Retornaria todas as categorias de um determinado produto, ou de todos os produtos, dependendo de qual função foi chamada antes(CategoriaProdutos.all ou CategoriaProdutos.find(params[:id])).
O segredo aqui está mais em entender os models do que o controller em si.

Criado 5 de setembro de 2011
Ultima resposta 4 de out. de 2011
Respostas 1
Participantes 2