2009-09-02 30 views
2

在我的第一個Rails項目中,我使用Ryan Bates的Nifty-Generators來創建初始應用程序文件。這給了我一個稱號方法LayoutHelperNifty發生器LayoutHelper問題

def title(page_title, show_title = true) 
    @content_for_title = page_title.to_s 
    @show_title = show_title 
end 

在我的主頁觀,我有一個簡單的標題:

<%= title "Welcome" -%> 

最後,在我的佈局(application.html.erb),我有:

<%- if show_title? -%> 
    <h1><%=h yield(:title) %></h1> 
<%- end -%> 

<%= yield %> 

我看到的是我的標題「歡迎」,其次是值爲show_title通過(或默認爲)。我想要前者,但不是後者。我明白爲什麼該方法隱式返回布爾值,但我沒有想到會顯示它。布爾顯示似乎是作爲主要內容yield的一部分出現的。

yield命令還沒有真正觸動我的事情,但(我明白了,我只是不得到它,如果是有道理的),所以我希望有人能幫助我理解爲什麼布爾正在印刷以及如何讓它停止。這個答案可以幫助我更好地瞭解yield如何解決當前問題。

謝謝。

+0

對於爲什麼當你沒有在任何地方做'content_for'調用,而是設置一個實例變量,爲什麼模板要調用'yield(:title)',我實際上有點困惑。也許我不太明白收益率如何運作。希望貝茨先生本人會介入並幫助解決這個問題:) – theIV 2009-09-02 01:56:39

+0

我對Ruby的瞭解還是非常尷尬,我們知道你們的階段,但是LayoutHelper中的標題方法將值for @content_for_title。難道這不會適當地增加產量嗎?或者還有什麼我不見了? – 2009-09-02 12:23:00

回答

3

試試這個:

<% title "Welcome" %> 

你要撥打的title方法,當你調用它不是寫出來的返回值。