Rails アプリケーションで、どの状況でパーシャルを使用し、いつヘルパーを使用しますか? どちらもマークアップの断片を表しているため、非常によく似ています。
これに関する規約はありますか?それらを使用する「レールの方法」はどれですか?
ありがとう!
Rails アプリケーションで、どの状況でパーシャルを使用し、いつヘルパーを使用しますか? どちらもマークアップの断片を表しているため、非常によく似ています。
これに関する規約はありますか?それらを使用する「レールの方法」はどれですか?
ありがとう!
私の経験則では、ヘルパーを使用して、リンクを含むスパンのような表示の単一の「ユニット」を構築し、パーシャルを使用して、複数の「ユニット」で構成されるより複雑な表示ユニットを構築することだと思います。 " ディスプレイの - グリッドやメニューのように。
パーシャルはビュー フラグメントであり、複数の場所で役立つビューの一部であり、重複を取り除くために引き出されます。ただし、要するに、ビュー (スタンドアロンまたは部分) はプレゼンテーション用です。
ご存じのとおり、コントローラーはロジックを処理するためのものです。ただし、ビューを表示するときに何らかのロジック処理が必要になることは避けられません。したがって、たとえば、管理者のみが利用できるプレゼンテーション ピースがある場合、そのロジックをヘルパーに抽出し、ビューを「純粋な」プレゼンテーションのみに保つことができます。ヘルパーには必然的にプレゼンテーション コード (html タグなど) が含まれますが、それは使用の副産物であり、主要な機能ではありません。
また、この 2 つを組み合わせることもできます。つまり、管理者プレゼンテーション用の部分とユーザー プレゼンテーション用の別の部分、および特定の状況でどちらがレンダリングされるかを決定するロジックを持つヘルパーです。
ちょうど私の $.02。
他の回答は、ヘルパーとパーシャルの使用に関する概念的なコンセンサスを表しています。さらに読むために、次のことを考慮してください。
ヘルパーで HTML を最小化することを主張する Basecamp 開発者 http://37signals.com/svn/posts/1108-what-belongs-in-a-helper-method
Viget 開発者はそれぞれのベンチマークを行い、ヘルパーがパーシャルよりも高速であることを発見しました http://www.viget.com/extend/helpers-vs-partials-a-performance-question/
コードが他のプロジェクトで再び使用される可能性が高い場合はヘルパーを使用し、プロジェクトに固有のコードにはパーシャルを使用します。
私はパーシャルをサブテンプレートとして使用します (つまり、ブログ投稿の宣伝文句のように、何度も使用される多くのマークアップを含むもの)、および表示を処理するためのヘルパーは、より論理的なもの (たとえば、管理者にのみ表示される div) です。
パーシャルは、Ruby コードと一緒に大量の HTML コードを持つことができるビューの一部です。render メソッドのコントローラーでパーシャルを使用することもできます。
ヘルパーの場合、短い html コードのメソッドを使用できます。ビューファイルで使用したい計算関連のメソッドをいくつか持つことができます。