2009-01-10 8 views
6

Dans les rails, est-il recommandé d'utiliser des aides de forme? En interne, tout se résume à html simple alors pourquoi ne pas écrire le code HTML directement? La performance sera évidemment meilleure en écriture html directe qu'en utilisant des helpers. Est-ce que l'utilisation d'aide-forme comme une convention ou quelque chose que les développeurs ferroviaires doivent suivre?Dans les rails, si utiliser des aides de forme ou non?

Répondre

13

Définir les performances. Votre performance ou les applications? Supposons que vous ayez le même fragment de code rhtml réparti sur vos vues. Dis que tu l'as dans des milliers d'endroits. Peut-être que vous ne l'avez même pas obtenu exactement le même dans tous les endroits. Maintenant, votre client veut changer cela (peut-être différent ordre de présentation ou un tel). Ça va vous prendre un certain temps pour le faire dans toutes les vues, non? Et il y a de fortes chances que vous n'obtiendrez pas le bon résultat la première fois. Les chances sont en effet que vous continuerez à recevoir des rapports de bogue pour les années à venir sur les endroits que vous avez manqué de changer.

Le client finira par payer beaucoup pour la "performance" acquise. Peut-être des centaines d'heures de travail. Peut-être des dizaines de milliers si vous évitez le principe DRY par principe. Pensez à tous les serveurs et toute la RAM qu'elle pourrait acheter pour ces heures de travail à la place. Si elle a tout dépensé en matériel, son application pourrait être cent fois plus rapide. Pensez à toutes les choses amusantes que vous pourriez travailler au lieu de se moquer de la modification des snippets html.

+1

Un des avantages de Rails et DRY est un cas tel que vous le décrivez, merci de le signaler! La performance est plus que la vitesse de rendu, c'est aussi la vitesse de développement. –

+0

Excellent argument. – Zequez

4

Je pense que les aides de forme sont un reflet du principe DRY (ne vous répétez pas). Plutôt que d'écrire le même code pour effectuer des tâches similaires, créer un helper de formulaire qui vous permet de réutiliser ce code est la solution. De cette façon, si vous avez besoin de faire un changement ou une correction, vous n'avez qu'à le faire en un seul endroit. Cela aide également à rendre votre code plus compact et plus lisible pour faire abstraction d'une action complexe dans un assistant de formulaire. Il en va de même pour les vues partielles, bien que les vues partielles aient tendance à encapsuler des marques plus complexes qu'un formulaire helper.

3

Les aides de formulaire sont particulièrement utiles pour permettre aux rails de gérer la création de formulaires en fonction de votre modèle. Pour citer l'exemple de la documentation de l'API:

Le code suivant

<% form_for :person, @person, :url => { :action => "create" } do |f| %> 
    <%= f.text_field :first_name %> 
    <%= f.text_field :last_name %> 
    <%= submit_tag 'Create' %> 
<% end %> 

génère ce html

<form action="/persons/create" method="post"> 
    <input id="person_first_name" name="person[first_name]" size="30" type="text" /> 
    <input id="person_last_name" name="person[last_name]" size="30" type="text" /> 
    <input name="commit" type="submit" value="Create" /> 
</form> 

Vous pouvez écrire le code html par vous-même, mais en utilisant les aides du formulaire que vous devez tapez moins et rendre la création de formulaire moins dépendante de l'implémentation des rails. Vous obtenez toujours un formulaire qui écrit des données dans votre modèle lorsque vous cliquez sur le bouton Envoyer. Si les développeurs de rails en modifient l'implémentation, vous obtenez automatiquement la sortie html correcte de vos helpers. Si vous aviez écrit le code html manuellement, vous devrez le mettre à jour pour refléter les changements du fonctionnement interne des rails.

+0

Merci pour la réponse. Cependant, je voudrais savoir, à quel point est-il mauvais d'utiliser des aides de forme du point de vue de la performance? – Chirantan

1

Cela semble bien quand un développeur ayant le même nom pour la classe, id et aucune valeur pour un champ d'entrée s'il a besoin d'un nom différent et aussi donner une valeur alors il doit écrire <% = text_field_tag ​​"name",: value => "valeur",: id => "id",: class => "" classe%> et pour le même code html peut être < input type = "text" value = "value" class = "class" name = id "name" = "id" /> pense maintenant au-dessus 1. première aide en évaluer html 2. maintenant également tenir compte de la longueur que nous avons aussi aide à écrire: => 3. parfois vous oubliez d'utiliser: ou, par erreur donc je pense que nous préférons html dans ce cas Et une chose si votre serveur reçoit beaucoup de demandes que ce sera trop occupé et le temps de réponse sera augmenté car <% =% > devrait avoir à exécuter

Questions connexes