Ruby on rails Rails:如何检查是否提供了内容?

Ruby on rails Rails:如何检查是否提供了内容?,ruby-on-rails,ruby,Ruby On Rails,Ruby,在我的RoR 4.2应用程序中,所有页面都提供了一个:title,用于HTML标题标记。 动态页面还提供了一个:页面标题内容,显示在我的应用程序标题布局中 为了保持一致的外观,我希望标题也显示在静态页面的应用程序标题布局中,即当未提供:page_heading时 以下是显示视图的开始代码: <% provide(:title, 'Managing business rules') %> <% content_for :page_heading do %> <h1&g

在我的RoR 4.2应用程序中,所有页面都提供了一个:title,用于HTML标题
标记。 动态页面还提供了一个:页面标题内容,显示在我的应用程序标题布局中

为了保持一致的外观,我希望标题也显示在静态页面的应用程序标题布局中,即当未提供:page_heading

以下是显示视图的开始代码:

<% provide(:title, 'Managing business rules') %>
<% content_for :page_heading do %>
<h1>Business Rule: <%= @business_rule.name %></h1>
<% end %>
----

业务规则:
----
以下是嵌入在_header.html.erb应用程序布局中的代码:

<h1> <%= yield(:page_heading.empty? ? :title : :page_heading) %> </h1>

因此,对于静态页面:标题显示在IceWeasel标题栏中,也显示在应用程序标题中,这是正确的

但是,对于动态页面:title显示在IceWeasel标题栏中,也显示在应用程序标题中,其中应显示:page_标题

符号:页面标题为空?上的条件不起作用

如何正确指定此条件并向屈服函数提供预期符号


谢谢。

您可以使用


简言之:

<h1><%= yield(content_for?(:page_heading) ? :page_heading : :title) %></h1>

由@Beerlington给出的答案是正确的,我将添加另一个选项,使代码干燥一点

<h1>
  <%= yield(content_for?(:page_heading)? :page_heading : :title) %>
</h1>


是啊!看起来有人已经用这个编辑了我的答案。如果我生成了一个空内容,它会是假的吗,我最终实现了这个解决方案,效果很好。谢谢<代码>符号s始终自行计算<代码>:页面标题将始终计算为
:页面标题
:页面标题
显然不是空的(其值为
:页面标题
)。因此,
:page\u heading.empty?
永远都是
真的
,这是不明智的。询问
符号是否为空的问题甚至没有意义。
符号始终为自身,因此从不为空。这就像询问号码
42
是否为空。不,当然,它不是空的,它是
42
<h1>
  <%= yield(content_for?(:page_heading)? :page_heading : :title) %>
</h1>