2010-08-18 7 views
0

dans mon projet j'ai environ 20 formulaires html avec beaucoup de différents <input>. Ces <input> sont uniques dans toutes les formes et ils ne se répètent pas entre eux. Pour chaque formulaire, il y a un script qui obtient des données à partir du formulaire, génère un fichier spécifique et le pousse vers le navigateur. et c'est tout. pas de bases de données, d'admin, de logins/mots de passe et d'autres trucs usuels de l'application web.problème avec la structure du projet MVC

donc par exemple en php, la structure du projet peut être quelque chose comme ceci:

formes/

-------> form1/

-------- -------> index.html

---------------> script/

------------- ----------> index.php

-------> form2/

---------------> index.html

----------- ----> script/

-----------------------> index.php

et ainsi de suite. Il est tout à fait clair et il fait de jolies urls comme:

www.website.com/forms/form1

mais Ruby-on-Rails il y a un modèle MVC. Et je n'ai aucune idée de comment organiser la structure avec un projet comme ça. Comment faire les choses correctement? Je ne devrais pas faire 20 contrôleurs différents après tout, non?

Répondre

0

Oui, vous faites 20 contrôleurs. De la même manière que vous avez 20 fichiers script/index.php dans votre structure PHP. La structure des rails ressemblerait à ceci.

 
app/ 
    controllers/ 
     form1s_controller 
     form2s_controller 
     ..... 
     formns_controller 
    view/ 
     form1/ 
      new.html.erb 
     form2/ 
      new.html.erb 
     ...... 
     formn/ 
      new.html.erb 
     layouts/ 
      application.html.erb 

Lorsque les contrôleurs ont un procédé pour chaque action que vous souhaitez effectuer, par ex. new, edit etc

Le fichier layouts/application.html.erb contiendra tout le balisage qui est cohérent sur toutes vos pages.

Enfin, n'essayez pas de combattre la structure. Il est là pour activer le code minimal en raison de la convention, si vous essayez de créer vos propres structures, vous allez créer un monde de douleur.

+0

Merci pour votre réponse. Eh bien dans chaque tutoriel/screecast que je vois, il y avait à peu près 3 ou 4 contrôleurs. Et je pense que 20, 30 et plus de contrôleurs c'est juste un mauvais projet organisé. Alors, c'est normal? – nukl

+0

Eh bien la plupart des tutoriels/screencasts sont par nature simplifier les choses. Vous attendez un contrôleur pour chaque «zone» de votre application, qu'il s'agisse d'un formulaire unique sans support de base de données ou d'un ensemble de formulaires qui encapsulent une zone particulière de votre application. Vous seul le saurez, mais il existe certainement de nombreuses applications ROR avec beaucoup plus de contrôleurs que cela. Redmine par exemple (A track tracker RG http://github.com/edavis10/redmine/tree/master/app/controllers/) a plus de 40 contrôleurs –

0

Puisqu'il n'y a pas de backend de base de données pour les formulaires, je créerais un FormsController, avec 20 méthodes (form1, form2, form3, ...).

Vos urls seraient alors regarder presque la même \forms\form1, \forms\form2 ...

Même si vous utilisez 20 contrôleurs, il y a plusieurs façons de Ruby pour supprimer le code en double. Donc, même dans un MVC normal, j'ai eu des applications avec 140 modèles, et de même autant de contrôleurs, la plupart de ces contrôleurs avaient seulement une ligne et les vues étaient complètement génériques.

Juste parce qu'une certaine solution semblait simple en PHP, cela ne signifie pas que de meilleures solutions n'existent pas. Comme par exemple MVC.Il peut sembler induire plus de code, plus de fichiers, plus de travail, mais la structure est là pour une bonne raison, elle sépare proprement les soucis, et chaque fichier en lui-même devient plus clair et plus facile à comprendre.

+0

si je vais utiliser un FormsController, comment je implémente un script pour chaque forme ? ces "scripts" sont assez gros, et il semble que chaque "script" -method sera placé dans le même FormsController, non? Ou il y a un moyen d'utiliser un fichier séparé pour chaque "script" comme en php? – nukl

+0

Dans MVC, il existe un modèle qui collecte les données qui doivent être affichées ou modifiées. Le contrôleur récupère les modèles corrects et les transmet à la vue. La vue peut manipuler les modèles et les présenter correctement. C'est l'intention que la vue est aussi simple que possible. Si des manipulations importantes ou compliquées sont nécessaires pour présenter les données correctement, nous utilisons une bibliothèque ou un présentateur ou des assistants. A partir de la vue, lors de la soumission, les données d'entrée utilisateur sont ensuite renvoyées au contrôleur pour traitement. Pourriez-vous décrire brièvement ce que fait votre "script"? donc je peux penser le long. – nathanvda

+0

L'objectif principal est d'obtenir un fichier texte spécial, basé sur les valeurs de l'entrée du formulaire. J'ai écrit une classe pour rendre plus facile ce "fichier texte au format spécial", appelé FileMaker. Alors, que fait exactement chaque script? Il commence par '$ filemaker = new FileMaker();', puis récupère toutes les valeurs de form et, en fonction de ces valeurs, fait quelque chose dans '$ filemaker'. Par exemple, 'if ($ _GET ['somecheckbox'] == true? $ Filemaker-> addProduct (" une ligne "): $ filemaker-> addBlock ('un bloc')'. Il est impossible de faire un gros script de 20 scripts et c'est pourquoi nous avons besoin d'un contrôleur pour chaque forme, je pense. – nukl

Questions connexes