Ruby on rails 3.2 由于某种原因,RubyonRails中的yield(:title)永远不等于false

Ruby on rails 3.2 由于某种原因,RubyonRails中的yield(:title)永远不等于false,ruby-on-rails-3.2,Ruby On Rails 3.2,即使我没有为页面设置标题(助手方法),“默认页面标题”也不会显示。由于某种原因,出现了“”(收益率(:title)的值)而不是它 为什么会发生这种情况?这只是Rails设计的一部分。你不能改变这种行为 您应该检查yield(:title).是否为空?为true或false,以查看是否调用了(:title)的内容 例如,而不是: #layouts/application.html.haml %title = yield(:title) || "Default page title

即使我没有为页面设置
标题
(助手方法),
“默认页面标题”
也不会显示。由于某种原因,出现了“
(收益率(:title)的值)而不是它


为什么会发生这种情况?

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

您应该检查yield(:title).是否为空?为true或false,以查看是否调用了(:title)的内容

例如,而不是:

#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
你想要:

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

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

在这种情况下,我会使用
present吗?
而不是
empty?
我想您可以使用其中一种。这取决于冒号之间参数的放置方式。您还可以将其缩短为
yield(:title)。presence | |“Default page title”
(yield(:title).empty? ? "Default page title" : yield(:title))