2017-01-17 11 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によって解決される順序です。

レイアウトの前にテンプレートが解決されているように見えるので、この場合、「asking」content_forブロックに実際のデータが表示されていました。ここで

は(可能な1)の答え:

/ => 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 

私は、これは誰かに役立ちます願っています。

関連する問題