2009-09-02 3 views
2

最初のRailsプロジェクトでは、Ryan BatesのNifty Generatorを使用して初期アプリケーションファイルを作成しました。これは私のタイトル法にLayoutHelper与える:私のホームページビューでNifty Generators LayoutHelper Issue

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

+0

Rubyについての私の知識は、それほど厄介な、気づいている段階ですが、LayoutHelperのtitleメソッドは値を設定します@content_for_titleのために。利回りが適切に設定されていないのでしょうか、それとも何か不足していますか? –

答えて

3

はこれを試してみてください:

<% title "Welcome" %> 

あなたは、あなたがそれを呼び出すときにその戻り値を記述しないで、titleメソッドを呼び出したいです。