2010-04-25 76 views
4

我想,如果內容是在我的模板提供content_for標籤進行檢測,如果沒有回落到默認值:Rails - 如何檢測content_for內容是否提供?

<title> 
    <% if content_is_provided -%> 
    <%= yield :title -%> 
    <% else -%> 
    404 - Page Unknown 
    <% end -%> 
</title> 

任何簡單的方法來檢測呢?我試過<% if :title -%>,但那並沒有太大的作用。謝謝。

回答

3

可以精簡代碼進一步:

def content_exists?(name) 
    return instance_variable_get("@content_for_#{name}") 
end 
2

試試這個:

<title> 
    <%= yield :title || "404 - Page Unknown" -%> 
</title> 
+0

不幸的是,這似乎並沒有爲我工作(沒有標題是呼應)。我感謝幫助! – sa125 2010-04-25 08:49:10

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)。

1

另一種方式

'共同/ top_status')%>
2

在一箇舊的Rails 2.1.1,

<%= (yield :title) || default_title %> 

正在爲我工​​作。