2009-01-10 3 views
6

Wird in Schienen die Verwendung von Formhelfern empfohlen? Intern läuft alles auf normales HTML, warum schreibe ich dann nicht direkt das HTML? Leistung wird offensichtlich besser sein, direktes HTML zu schreiben, als Helfer zu verwenden. Benutzt man Formular-Helfer wie eine Konvention oder etwas, dem Entwickler folgen müssen?In Schienen, ob Formhelfer oder nicht?

Antwort

13

Definieren Sie die Leistung. Ihre Leistung oder die Anwendungen? Angenommen, Sie haben den gleichen Rhtml-Snippet in Ihren Ansichten verteilt. Angenommen, Sie haben es an Tausenden von Orten. Vielleicht haben Sie es nicht einmal genau das gleiche an allen Orten bekommen. Jetzt möchte Ihr Kunde das ändern (vielleicht andere Reihenfolge der Präsentation oder ähnliches). Es wird eine Weile dauern, das in allen Ansichten zu tun, oder? Und die Chancen stehen gut, dass Sie es beim ersten Mal nicht richtig machen werden. Die Wahrscheinlichkeit ist groß, dass Sie in den kommenden Jahren immer wieder Fehlermeldungen erhalten werden, die Sie verpasst haben.

Der Kunde zahlt am Ende viel für diese gewonnene "Leistung". Vielleicht Hunderte von Arbeitsstunden. Vielleicht Zehntausende, wenn man das DRY-Prinzip grundsätzlich vermeidet. Denken Sie an all die Server und den gesamten Arbeitsspeicher, den sie für diese Arbeitszeiten kaufen könnte. Wenn sie alles auf Hardware ausgab, könnte ihre Anwendung hundertfach schneller laufen. Denke an all die lustigen Dinge, mit denen du arbeiten könntest, anstatt herumzuschnüffeln und HTML-Snippets zu ändern.

+1

Einer der Vorteile von Rails und DRY ist solch ein Fall, wie Sie skizzieren, danke, dass Sie darauf hingewiesen haben! Leistung ist mehr als Rendering-Geschwindigkeit, es ist auch Entwicklungsgeschwindigkeit. –

+0

Großes Argument. – Zequez

4

Ich denke, dass Form Helfer ist eine Reflexion des DRY (sich nicht wiederholen) Prinzip. Anstatt denselben Code für ähnliche Aufgaben zu schreiben, sollten Sie einen Formularhelfer erstellen, mit dem Sie diesen Code wiederverwenden können. Auf diese Weise müssen Sie nur an einer Stelle Änderungen vornehmen oder Korrekturen vornehmen. Es hilft auch, Ihren Code kompakter und lesbarer zu machen, um eine komplexe Aktion in einen Formularhelfer zu abstrahieren. Dasselbe gilt für Teilansichten, obwohl Teilansichten dazu neigen, komplexere Markierungen einzubetten als ein Formularhelfer.

3

Die Formularhilfen sind besonders nützlich, damit die Rails Formulare basierend auf Ihrem Modell erstellen können. Zu zitieren das Beispiel der API-Dokumentation:

Der folgende Code

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

diesen 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> 

erzeugt könnten Sie die HTML schreiben selbst, sondern durch die Form Helfer verwenden Sie müssen Geben Sie weniger ein und machen Sie die Formularerstellung weniger abhängig von der Rails-Implementierung. Sie erhalten immer ein Formular, das Daten in Ihr Modell schreibt, wenn Sie auf die Senden-Schaltfläche klicken. Wenn die Rails-Entwickler die Implementierung davon ändern, erhalten Sie automatisch die korrekte HTML-Ausgabe von Ihren Helfern. Wenn Sie das HTML manuell geschrieben hätten, müssten Sie es alle aktualisieren, um die Änderungen des Innenlebens von Schienen zu reflektieren.

+0

Vielen Dank für die Antwort. Allerdings würde ich gerne wissen, wie schlecht es ist, Formularhelfer aus Performance-Sicht zu verwenden? – Chirantan

1

Sein scheint gut, wenn ein Entwickler mit demselben Namen für die Klasse, id und keinen Wert für ein Eingabefeld, wenn er andere Namen id muss und auch Wert gibt dann er schreiben muß <% = text_field_tag ​​„namen“,: Wert => "value",: id => "id",: class => "" class%> und für denselben html kann < input type = "text" value = "wert" class = "class" name = "name" id = "id" /> denken jetzt Kopf 1. erste Helfer in html 2. bewerten jetzt auch Länge berücksichtigen, dass in Helfer schreiben wir auch: => 3. manchmal vergessen Sie zu verwenden: oder, aus Versehen so denke ich, dass wir in diesem Fall HTML bevorzugen Und eine Sache, wenn Ihr Server viel Anfrage bekommen, als es zu beschäftigt und die Reaktionszeit erhöht wird, weil <% =% > sollte ausführen müssen