在我的RoR 4.2应用程序中,所有页面都提供了HTML标题<TITLE>
标记中使用的:title 。
动态页面还提供:page_heading 内容,该内容显示在我的应用程序标题布局中。
为了保持一致的外观,我希望标题也显示在静态页面的应用程序页眉布局中,即未提供: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标题栏中,也显示在应用程序标题中,这是正确的。
但是,对于动态页面:标题显示在IceWeasel标题栏中,也显示在应用程序标题中,其中:page_heading是预期的。
符号:page_heading.empty?上的条件不起作用。
如何正确指定此条件并将期望符号提供给yield函数?
感谢。
答案 0 :(得分:6)
您可以使用content_for?
检查内容<h1>
<% if content_for? :page_heading %>
<%= yield :page_heading %>
<% else %>
<%= yield :title %>
<% end %>
</h1>
或简称:
<h1><%= yield(content_for?(:page_heading) ? :page_heading : :title) %></h1>
答案 1 :(得分:2)
@Beerlington的回答是对的,我只是添加另一个选项来干掉代码。
<h1>
<%= yield(content_for?(:page_heading)? :page_heading : :title) %>
</h1>