2010-12-03 5 views
2

レールでは、yield/content_forをサイトメッシュに使用しています。 (http://guides.rubyonrails.org/layouts_and_rendering.html#using-content_forGRAILSで "yield/content_for"のレールを作成する方法はありますか?

Grailsのドキュメントでこれを行う方法が見つかりません...どうすればいいですか?ここで

EDIT

は状況です:

私はこの含むレイアウトがあります。

<body> 
    <div id="wrapper"> 
     <div id="container"> 
      <div id="header"> 
       <g:render template="/layouts/header"/> 
      </div> 
      <g:render template="/layouts/menu"/> 
      <div id="container-homepage"> 
       <g:layoutBody/> 
       <div id="subfooter"> 
        <div id="content"> 
         <div id="left"> 
          <div id="logo_sub_header"></div> 
         </div> 
         <div id="right"></div> 
        </div> 
       </div> 

      </div> 
     </div> 
    </div> 
</body> 

をそして私はのためのHTMLスニペット(検索ツールバーを追加できるようにしたいです例)はcontainer-homepage divの上にあります。この検索ツールバーが常に同じであれば、部分的にしかできないことがあります。ここのことは、この検索バーが私が訪れているページに依存していることです。

私はコンテナのホームページのdivの位置を変更して、レイアウトではなくビューに直接入れることもできますが、すべてのビューでそれを行う必要があります。それはDRYではありません。

アイデア? よろしくお願いします。

+1

私はコンテンツブロックがあなたのために働くと思います。以下の私の返事を参照してください。 Fabrizio –

答えて

2

私はあなたが2つの解決策があると思う:

グラムを:レンダリングタグは、あなたのコンテンツブロックは、カスタムページに基づいて変更されることはありません場合は最良の選択肢です。

グラムので、とにかく、私は、このリンクにああ http://grails.org/Content+Blocks

を見てみましょう:pagePropertyそれは最もエレガントかつ柔軟なソリューションです。

+0

ありがとうございました解決策2は私が探していたものです! – Pasta

0

おそらくg:renderタグをお探しですか?ビュー内の任意の場所(他のテンプレートを含む)にテンプレートをレンダリングすることができます。また、使用するテンプレートのモデルを渡すこともできます。

命名規則 - テンプレートビューのページの下部にあるセクションに注意してください。gspファイル名はアンダースコアで始まります(ただし、アンダースコアはレンダリングタグでは指定されていません)。これを無効にする方法がありますが、そこにアンダースコアを置くと、自動的に動作します。

+0

私は部分的にこのトリックをしないと説明するために私の質問を編集しました。 – Pasta

関連する問題