我想检测我的模板中是否为content_for标记提供了内容,如果没有回退到默认值:
<title>
<% if content_is_provided -%>
<%= yield :title -%>
<% else -%>
404 - Page Unknown
<% end -%>
</title>
任何简单的方法来检测这个?我试过了<% if :title -%>
,但这并没有做太多。感谢。
答案 0 :(得分:3)
您可以进一步简化代码:
def content_exists?(name)
return instance_variable_get("@content_for_#{name}")
end
答案 1 :(得分:2)
试试这个:
<title>
<%= yield :title || "404 - Page Unknown" -%>
</title>
答案 2 :(得分:2)
在旧的Rails 2.1.1中,
<%= (yield :title) || default_title %>
正在为我工作。
答案 3 :(得分:1)
在挖掘了content_for代码之后,我通过创建一个帮助方法找到了一个有效的解决方案:
def content_exists?(name)
return true if instance_variable_get("@content_for_#{name}")
return false # I like to be explicit :)
end
并在视图中:
<% if content_exists?(:title)-%>
<%= yield :title %>
<% else -%>
404 - Page Unknown
<% end -%>
目前这似乎有效(Rails 2.3.5)。
答案 4 :(得分:1)
另一种方式
'common / top_status')%&gt;