0

3.0.7から3.2.8にアップグレードしたところ、多数のパーシャルが表示されていません。ただし、それらは(ログに従って)レンダリングされており、エラーメッセージは表示されません。これが(簡略化された)例です:

layouts / application.html.haml

(snip)
%body
  = yield :header
  = yield
(snip)

home / index.html.haml

- content_for :head do
  (snip)

- content_for :header do
  (snip)

= render(:partial => "home_content", :layout => "shared/layouts/content_columns")

shared / layouts / _content_columns.html.haml

%div
  .content
    = yield :content_column
  .sidebar
    = yield :sidebar

home / _home_content.html.haml

- content_for :content_column do
  = render_external("twitter")
  = render(:partial => "seo_content")

- content_for :sidebar do
  = render(:partial => "featured")
  = render(:partial => "testimonials")
  = render(:partial => "social")

:headおよびのすべてのコンテンツ:headerが表示されますが、:content_columnまたはの:sidebarコンテンツは表示されません。パーシャルをレイアウトでレンダリングすることで何かが変わったと思いますが、いくつかのクイック検索では明らかなものは何も得られませんでした。

ありがとう!

アップデート

ログからのレンダリング順序は次のとおりです(私が含めたデバッグステートメントを含むshared/layouts/_content_columns.html.haml):

Rendered home/_twitter.html.haml (1.4ms)
Rendered home/_seo_content.html.haml (0.9ms)
Rendered home/_featured.html.haml (2.2ms)
Rendered home/_testimonials.html.haml (2.1ms)
Rendered home/_social.html.haml (213.8ms)
DEBUG: String="Rendering shared/layouts/content_columns"
DEBUG: String="At '= yield :content_column'"
DEBUG: String="At '= yield :sidebar'"
Rendered home/_home_content.html.haml (256.9ms)
Rendered home/index.html.haml within layouts/application (300.6ms)

ご覧のとおり、パーシャルはとの前にレンダリングされているhome_contentためindex、そのコンテンツはで取得する必要があります= yieldlayouts/application

4

1 に答える 1

1

答えは変更することshared/layouts/_content_columns.html.hamlです:

%div
  .content
    = content_for :content_column
  .sidebar
    = content_for :sidebar

このSOの質問に感謝します:content_forと部分的なyield

于 2012-09-14T21:02:53.390 に答える