2009-08-22 7 views
1

CMSのレールアプリに「テンプレート」システムがあります。基本的に、HTMLテンプレート全体はデータベース列に格納され、文字列に(<!--THEME_Body-->のような)キーコードがあり、アプリケーションによって生成されたコンテンツに置き換えられます。'テンプレート'をレールで解析する(gsubの代替)

実際のレイアウトを使用してテンプレートをレンダリングします。レイアウトになっていることすべてがある:

<%= generate_theme.gsub!('<!--THEME_Body-->', yield) -%> 

ヘルパーはメタデータやパン粉などの正確なテーマとさらにgsubs他の領域を取ること。

これについてもっと良い方法があるのだろうかと思っています。おそらくcontent_forなどを使用していますか?

答えて

1

Rubyのセクシーな構文を使って、すべての行を構文的に正しいものにまとめることはできますが、これはかなり良い方法です。スクリプトをスピードアップし、見た目が良く見えます。それは、アプリケーションのデータをどうするだとして、それは、理想的には、モデルに配置する必要がありますが、それはまたどこかにヘルパーに行くことができる - 。このコードは、ビューに行くべきではないことを念頭に置い

tags = { 
    '<!--THEME_Body-->' => yield, 
    '<!--THEME_Head-->' => yield(:head), 
    '<!--STYLESHEET-->' => stylesheet_link_tag('application') 
} 

tags.each { |str, rep| generate_theme.gsub!(str, rep) } 

ベアそれは、モデル内のインスタンス変数だ場合、あなただけの

generate_theme.parse 

を呼び出すことができ、そのコードが実行される可能性 - それは可能な限りビューをクリーンアップの標準MVC大会に多くの方とスティックに見えます。

jamie

+1

私はそれを月曜日に渦巻きにします:) –

関連する問題