2017-01-17 2 views
1

어떤 이유로 인해 부분적으로 content_for 블록을 렌더링 할 수 없습니다.부분 렌더링하지 않는 레일 content_for

여기 코드의 다음은 포함되지 않습니다 다음과 같은 몇 가지 이유를 들어

/ => index.html.slim 
doctype html 
html lang="de" 
    = render "layouts/headinclude" 
    body 
    = yield 
    - if Rails.env.production? 
     - content_for :additional_headincludes do 
     = render "layouts/hotjar" 

내 부분 한 번 완전히 렌더링 :

/# => _headinclude.html.slim 
    head 
    title= @title || "My Title" 
    link href='//fonts.googleapis.com/css?family=Droid+Sans:400,700' rel='stylesheet' type='text/css' 
    - if content_for?(:additional_headincludes) 
     = yield :additional_headincludes 

나는이 작동하지 않을 이유가 표시되지 않습니다. 어떤 도움을 주셔서 감사합니다. 부분을 내 headinclude -partial에 직접 렌더링 할 때 모두 정상적으로 작동합니다.

답변

3

여기에 문제가있었습니다. render "layouts/headinclude"을 호출하기 전에 content_for- 블록을 정의해야했습니다. 은 "응답"content_for - 블록합니다 (render "layouts/hotjar" part의를 포함하는 하나) 템플릿 안에 있다면이 개념이 작업 한 것을

주 (처럼 show 또는 index이든 템플릿에 현재있다). 그 이유는 Rails가 콘텐츠를 처리하는 순서입니다.

템플릿이 레이아웃 전에 해결 된 것 같습니다.이 경우 "묻기"는 content_for 블록에 실제 데이터가 표시되었을 것입니다.

/ => index.html.slim 
- if Rails.env.production? 
    - content_for :additional_headincludes do 
    = render "layouts/hotjar" 
doctype html 
html lang="de" 
    = render "layouts/headinclude" 
    body 
    = yield 

나는이 사람을 도움이되기를 바랍니다 :

여기에 (가능한 한)에 대한 답변입니다.