2

由于某种原因,我无法在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

我看不出这不起作用的原因。任何帮助表示赞赏。当直接在我的 -partial 中渲染部分时headinclude,一切正常。

4

1 回答 1

6

这里的问题在于订单。我必须content_for在调用之前定义 -block render "layouts/headinclude"

content_for请注意,如果“回答”-block (包含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

我希望这对某人有所帮助。

于 2017-01-17T15:33:17.047 回答