2012-09-03 65 views
0

我在關注railscasts以更新自定義頁面標題並意識到它不再工作。所以,我根據評論更新了代碼如下。我看到'我的服務' - '如果我沒有設置標題,但我期望它包含默認標題值集。有什麼見解嗎?rails not updating頁面標題

application.html.erb

<!DOCTYPE html> 
<html> 
<%= render 'layouts/head' %> 
<!-- <body> included in yield --> 
    <%= yield %> 
<!-- </body> --> 
</html> 

_head.html.erb

<head> 
    <title>My services - <%= yield(:title) %> </title> 
</head> 

home.html.erb [故意不設置標題看到默認值]

<body></body> 

application_helper.rb

def title(page_title, default="Testing") 
    content_for(:title) { page_title || default } 
    end 

application_helper.rb,我也嘗試以下解決方案:

def title(page_title) 
    content_for(:title) { page_title || default } 
    end 

    def yield_for(section, default = "Testing") 
    content_for?(section) ? yield(section) : default 
    end 

任何見解嗎?

+1

您需要an = yield之前。 <%= yield ... – robotcookies

+0

這是一個錯字..我在代碼:) – Kiran

+0

哦,我知道這太容易了。 – robotcookies

回答

1

我想你應該簡化:

<title>My services - <%= page_title %> </title> 

application_helper.rb

def page_title 
    if content_for?(:title) 
    content_for(:title) 
    else 
    "Testing" 
    end 
end 

現在,我不認爲你真的想 「測試」 ......說真的,我覺得你只是想在HTML頁面標題末尾看不到「 - 」。那麼,爲什麼不:

<title><%= html_title %></title> 

def html_title 
    site_name = "My services" 
    page_title = content_for(:title) if content_for?(:title) 
    [site_name,page_title].join(" - ") 
end 

你要麼看到:

<title>My services</title> 

,或者如果您設置的標題像這樣:

<%= content_for(:title) { "SuperHero" } %> 

你會看到:

<title>My services - SuperHero</title> 

#content_for?定義爲:

#content_for? simply checks whether any content has been captured yet using #content_for Useful to render parts of your layout differently based on what is in your views. 
+0

感謝您的精心解答。 content_for上的提示?是有幫助的。你是對的,我不想要測試,但是客戶想要看到其他類似「我們的解決方案」的東西。將堅持到第一部分。 – Kiran