2012-03-05 5 views
3

をもたらす:降伏コンテンツまたは私は自分のアプリケーションテンプレートで次のようにやってる

<%= yield(:content) or yield %> 

私はアプリケーションテンプレート内にネストされた質問のテンプレートを持っています。 しかし、質問のインデックスでは、質問テンプレートではなく、アプリケーションテンプレートを表示したいだけです。

そのように、私はこのようにそれをオーバーライドします。

format.html { render :layout => "application"} 

これは、アプリケーションテンプレートがレンダリングされるように、テンプレートの罰金ではなく、質問テンプレートを上書きします。しかし、 "またはyield"ステートメントが動作しているようには見えません。私のコンテンツは空白です。

<%= yield %> 

私はネストされたテンプレートを持つことができるので、元のステートメントが必要です。 私は入れ子にされたテンプレートを持つためにサイト全体にcontent_forを書く必要がない方がいいです。

どのような考えですか?

<%= yield(:content) or yield %> 

使用する代わりに

:このような

答えて

2

何かがトリックを行う必要があります

<%= content_for?(:content) ? yield(:content) : yield %> 

この情報がお役に立てば幸いです。

0

直接の回答ではありませんが、設定の詳細を教えてください。私はあなたが "正しい"それをやっているとは思わない、つまり、私はあなたが必要と感じない。yield(:content)。私は特にあなたが実際にcontent_for :contentを提供する場合に興味があります。この場合、yield(paramsなし)を呼び出さないので、yield(:content)の代わりにyield(paramsなし)のコンテンツを提供するだけではない理由はわかりません。

また、もう1つの答えに加えて、解決策が機能しない場合に備えて(c = yield(:content)).present? ? c : yieldを試すこともできます。

関連する問題