2010-12-27 11 views
8

私はRoR開発にもっと力を入れています。 ERBは私にはまったく気に入らない。これまでJSPでこれをやっていました。私のマークアップ内にRubyコードを埋め込むことは、ロジックがビュー固有のものであっても、良い計画のようには感じられません。おそらく私の恐れは根拠がないかもしれませんが、危険だと感じています。さらに、たくさんのタイピングがあります。ERBの代替品

私はHAMLを見つけました。私はもう少し評価をしています。それが良い選択肢なら、おそらくあなたはそれのためのいくつかの良いリソースを与えることができます。

HAMLを超えて、RailsビューレイヤーにはERBの他に何がありますか?

私のERBの恐れは正当なものですか?

答えて

7

あなたの意見にRubyが好きでない場合、HAMLはあなたを助けません。構文的にはよりsuccintですが、ERBと同様に埋め込みRubyを使用します。

あなたの意見に論理を避けたい場合は、Mustacheのようなものを見てください。これは、ロジックとプレゼンテーション(ロジックフリーのビュー)のより厳密な分離を強調するテンプレートスタイルを使用します。あなたはビューを行うための、より抽象化された方法のための脊柱の中に見ることができる

12

テンプレート内に埋め込まれたRubyコードは問題ありません。 ErbとHamlはテンプレート言語としての威力を発揮します。実際、多くのテンプレート言語は、テンプレートにコード(例えば、Djangoのテンプレート言語)がないために苦しんでいます。

実際に発生する実際の問題は、開発者が複雑なコードを貼り付けるか、データをコード引き出しするか、またはデータをデータを更新するか、コードを決定するときです。

RubyとRailsは、非常に優れたパワーと柔軟性を提供します。責任を負うのは開発者の責任です。コントローラ内からデータを取得します。複雑なコードをヘルパーに移動する。等

<%= link_to edit_post_path(@post) do %> 
    Edit post "<%= @post.title %>"!!! 
<% end %> 

上記は単純な組み込みRubyであり、ビュー内にうまく座っています。 HAMLのバージョンは次のとおりです。

= link_to edit_post_path(@post) do 
    Edit post "#{@post.title}"!!! 

あなたは、単純なコードを維持し、任意の複雑なコードは、コントローラまたはヘルパーに移動されている限り、あなたは罰金になります。

HamlとErbのテンプレートは、Hamlがすべてのendを破棄することを除いて、同量の埋め込みRubyコードを含んでいます。

+0

ちょっと、素敵!以前は補間のために '=='で始める必要がありましたが、もはやそうではないようです。 TIL! :D – Matchu

0

私は、あなたのように、Javaでいくつかの時間を務めた後、Railsの(ルビー)に来ています。 VelocityとFreemarkerを発見する前に、JSPの悪い昔のことを思い出して、ERBを見たときに私は内臓反応を起こしました。

とにかく、私はあなたが興味かもしれない2つのテンプレート言語で探しています:

ハンドラーバーに興味がある場合は、Handlerbars.rbもご覧ください。その名前で少なくとも1つのプロジェクトがありますが、これはRubyのHandlerbarsポートではなく、Handlerbars.jsのRubyラッパーです。それは「本当のハンドラーバー」なのです。