我想检测是否在我的模板中为 content_for 标签提供了内容,如果没有回退到默认值:
<title>
<% if content_is_provided -%>
<%= yield :title -%>
<% else -%>
404 - Page Unknown
<% end -%>
</title>
有什么简单的方法可以检测到这一点吗?我试过<% if :title -%>
了,但效果不大。谢谢。
我想检测是否在我的模板中为 content_for 标签提供了内容,如果没有回退到默认值:
<title>
<% if content_is_provided -%>
<%= yield :title -%>
<% else -%>
404 - Page Unknown
<% end -%>
</title>
有什么简单的方法可以检测到这一点吗?我试过<% if :title -%>
了,但效果不大。谢谢。
您可以进一步简化代码:
def content_exists?(name)
return instance_variable_get("@content_for_#{name}")
end
试试这个:
<title>
<%= yield :title || "404 - Page Unknown" -%>
</title>
在旧的 Rails 2.1.1 中,
<%= (yield :title) || default_title %>
正在为我工作。
在深入研究 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)。
另一种方式
'common/top_status') %>