2010-12-03 2 views
2

레일에서 저는 yield/content_for을 사이트 메쉬에 사용했습니다. (http://guides.rubyonrails.org/layouts_and_rendering.html#using-content_for)GRAILS에서 "yield/content_for"레일을 만드는 방법이 있습니까?

Grails 문서에서이 방법을 찾을 수 없습니다 ... 도와 주시겠습니까? 내가 레이아웃이 포함이

: 여기에 편집

상황이다

<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

나는 당신이 두 가지 해결책이 있다고 생각 콘텐츠 블록이 사용자 정의 페이지에 따라 변경하지 않을 경우 태그가 최선의 방법입니다 렌더링합니다. 그것은 가장 우아하고 유연한 솔루션입니다 pageProperty : g 때문에

어쨌든 내가보고 아이 링크 http://grails.org/Content+Blocks

를 취할 것입니다.

+0

감사의 해결책 2 내가 무엇을 찾고 있었는지! – Pasta

0

아마 g:render 태그를 찾고 계십니까? 이 도구를 사용하면 다른 템플리트를 포함하여보기 내의 모든 위치에 템플리트를 렌더링 할 수 있습니다. 템플릿에 사용할 모델을 전달할 수도 있습니다.

명명 규칙 - 템플릿보기에서 해당 페이지 하단의 섹션에주의하십시오. gsp 파일 이름은 밑줄로 시작해야하지만 밑줄은 render 태그에서 제공되지 않습니다. 이것을 무시하는 방법은 mos def이지만, 거기에 밑줄을 넣으면 자동으로 작동합니다.

g :

+0

부분적인 것을 설명하기 위해 내 질문을 편집하여 속임수를 쓰지 않을 것입니다. – Pasta

관련 문제