Pergunta

Eu estou escrevendo um aplicativo que - de forma semelhante a muitos aplicativos lá fora -. É de 90% coisas CRUD normal e 10% de "suco", onde precisamos de lógica de negócio desagradável e mais flexibilidade e personalização

Em relação a este 90%, eu estava tentando ficar com o princípio de DRY, tanto quanto eu posso. Enquanto controladores de ir, eu descobri resource_controller para realmente trabalho, e eu poderia se livrar de todos os controladores na área, substituindo-os por um genérico.

Agora, eu gostaria de saber como obter o mesmo com os pontos de vista. Nesta aplicativo eu tenho, um layout application.html.erb geral e, em seguida, eu devo ter outra camada layout, comum para todos os pontos de vista CRUD e, finalmente, uma parte "core":

  • Em index.html.erb tudo que eu preciso para gerar uma tabela simples com os campos e etiquetas que indicam.

  • Para o novo e editar, também genérico edição formulário, indicando rótulos e campos (com a possibilidade de fornecer campos personalizados se necessário).

  • Não tenho a certeza que vou precisar mostrar, mas se eu fizer isso seria o mesmo como novo e editar.

O que plugins e ferramentas (ou mesmo artigos e ponteiro geral) iria me ajudar a conseguir esse feito?

Obrigado, Felipe.

Foi útil?

Solução

Se você Dryed-se os controladores e agora deseja secar a vista, uma abordagem é render :action => *actionname* e armazenar o conteúdo da interface do usuário que podem mudar em variáveis ??de instância (Para que eles estão disponíveis na vista) Desta forma, você seria capaz para re-utilizar a mesma visão do editar , new , lista ou Mostrar . Por exemplo, você está editando algo relacionado ao Foo , então você título deve ler Editing <%= @type %>, assim se seus ajudantes formulário. Foo poderia muito bem, em seguida, mudar para bar . Assim que você está reutilizando a mesma visão para diferentes entidades (ou controladores devo dizer). Lembre-se que, redirect_to Ao contrário, render :action única torna a vista e não chama a ação do controlador da ação que está tentando processar.

Uma coisa é certa, se quiser secar qualquer coisa, você precisa padronizar ou seguir uma convenção. Exemplo, a estrutura de seus pontos de vista, neste caso.

Outras dicas

Você pode executar script/generate scaffold test name:string description:text valid:boolean e olhar para os pontos de vista que gera (e script/destroy scaffold test executado para remover os arquivos). Isso lhe dará uma boa noção do caminho padrão para escrever o 4 padrão Rails vistas.

Eu também recomendo a leitura dos capítulos relevantes em "Agile Web Development with Rails" e "The Way Rails".

Se você tem uma vista existentes que precisam ser limpos, este episódio de Railscasts é grande: limpar a exibição

Dary

Parece que há apenas uma nova jóia que está muito perto de suas necessidades:

http://github.com/codez/dry_crud

Com base em uma superclasse comum (CrudController), você pode herdar a funcionalidade CRUD para os seus vários controladores de modelo e adaptar o que é especial lá. Isto é o que você já fez, provavelmente.

A nova coisa sobre dry_crud é que também pontos de vista e parciais são herdadas. Você definir um modelo de base comum para cada ação CRUD, talvez divididos em dois parciais. Graças aos ajudantes, formulários e tabelas fornecidas podem ser genericamente definido, olhando para as definições do modelo atual de coluna. Em vista do seu modelo específico, então você pode adaptar apenas os parciais ou pontos de vista essa necessidade personalização.

Tenha uma olhada na documentação encontrado no site acima e permanecer seco!

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top