3
#layouts/application.html.haml
    %title
     = yield(:title) || "Default page title"
     = " | DefaultSite.com"


#application_helper.rb
 def title(page_title)
    content_for(:title) { page_title }
  end

即使我没有title为页面设置(帮助方法),"Default page title"也永远不会显示。取而代之的是""(的值yield(:title))出于某种原因出现。

为什么会这样?

4

1 回答 1

3

这只是 Rails 设计的一部分。你不能改变这种行为。

您应该检查是否 yield(:title).empty? 为真或假,以查看是否调用了 content_for(:title)。

例如,而不是:

yield(:title) || "Default page title"

你要:

(yield(:title).empty? ? "Default page title" : yield(:title))

这只是检查它是否为空,如果为空则应用默认值,否则使用标题。

于 2012-09-02T04:04:31.887 回答