6

レールでは、フォームヘルパーを使用することをお勧めしますか? 内部的には、すべてが単純な html に要約されるので、html を直接記述してみませんか? ヘルパーを使用するよりも、直接 html を作成する方が明らかにパフォーマンスが向上します。フォーム ヘルパーの使用は規則のようなものですか、それとも Rails 開発者が従わなければならないものですか?

4

5 に答える 5

14

パフォーマンスを定義します。あなたのパフォーマンスやアプリケーション? ビュー全体に同じ rhtml スニペットが広がっているとします。何千もの場所にあるとしましょう。たぶん、すべての場所でまったく同じではないかもしれません。ここで、顧客はこれを変更したいと考えています (プレゼンテーションの順序が異なるなど)。すべてのビューでこれを行うには、しばらく時間がかかりますよね? そして、最初は正しく理解できない可能性があります。実際、変更し忘れた場所について、今後何年にもわたってバグ レポートを受け取り続ける可能性があります。

顧客は、得られた「パフォーマンス」に対して多額の費用を支払うことになります。数百時間の労働時間かもしれません。原則として DRY 原則を回避すると、数万になる可能性があります。代わりに、彼女がこれらの勤務時間のために購入できるすべてのサーバーとすべての RAM を考えてみてください。すべてをハードウェアに費やすと、アプリケーションは 100 倍高速に実行される可能性があります。HTML スニペットの変更をいじくりまわす代わりに、作業できる楽しいことをすべて考えてみてください。

于 2009-01-10T14:35:13.707 に答える
4

フォーム ヘルパーは、DRY (同じことを繰り返すな) の原則を反映していると思います。同様のタスクを実行するために同じコードを書き直すのではなく、そのコードを再利用できるフォーム ヘルパーを作成するのが最善の方法です。そうすれば、変更や修正が必要な場合でも、1 か所で行うだけで済みます。また、コードをよりコンパクトにして読みやすくし、複雑なアクションをフォーム ヘルパーに抽象化するのにも役立ちます。同じことが部分ビューにも当てはまりますが、部分ビューはフォーム ヘルパーよりも複雑なマークアップをカプセル化する傾向があります。

于 2009-01-10T14:22:23.857 に答える
3

フォーム ヘルパーは、モデルに基づくフォームの作成を Rails が処理できるようにするのに特に便利です。API ドキュメントの例を引用するには:

次のコード

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

この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>

自分で html を作成することもできますが、フォーム ヘルパーを使用することで入力が少なくなり、フォームの作成が Rails の実装にあまり依存しなくなります。送信ボタンを押すと、モデルにデータを書き込むフォームが常に表示されます。Rails 開発者がこれの実装を変更した場合、ヘルパーから正しい html 出力が自動的に取得されます。html を手動で作成した場合は、レールの内部動作の変更を反映するためにすべてを更新する必要があります。

于 2009-01-10T14:23:34.167 に答える
1

開発者がクラス、id に同じ名前を持ち、入力フィールドに値を持たない場合、別の名前 id が必要で値を指定する必要がある場合は、 <%= text_field_tag " name", :value=>"value"と記述する必要がある場合に適しているようです。 , :id=>"id" ,:class=>""class %>同じ html に対して< input type ="text" value ="value" class="class" name ="name" id="id "/> オーバーヘッドを考える1.最初のヘルパーを html に評価する2.ヘルパーの長さも考慮する必要がある : , => 3. : や , を使用するのを忘れることがある間違いなので、その場合はhtmlを好むと思いますそして、サーバーがビジー状態になるよりも多くのリクエストを受け取った場合、 <%= %> を実行する必要があるため、応答時間が長くなります

于 2012-05-18T11:59:55.020 に答える