2011-02-03 12 views
0

Rails 2.3.8から3.0.3にアップグレードしていて、ネストされたレイアウト用のコードが動作していないことに注意してください。私のメインのアプリケーションレイアウトでレンダリング:inline => "<%= yield %>"が動作しない

は、私はラインを持っている

<% = controller.sub_layout%>その後、持っているコントローラに見えます

:問題がある

def sub_layout 
    render :inline => "<%= yield %>" 
    # or otherwise some partial for the sub-layout 
end 

を、これはレンダリングされません!私がレイアウトに直接<%= yield%>ステートメントを置くと動作します。だから問題は、ここで何が起きているのか、それをどうやって解決するのだろう?

これはRailsの2.3.8

答えて

0

はだからすべては、この上の背景のいくつかのより多くを持っています、全体のサブレイアウトのアプローチは、このブログの投稿に基づいています:Sorta Nested Layouts(解決策はコメント欄に記載されています)

代わりに、コントローラメソッドsub_layoutを作る、sublayoutを使用するすべてのコントローラは、変数を設定before_filterメソッドを定義する必要がある:

def inner_layout 
    @inner_layout = 'layouts/sublayout_partial_name' 
end 

メインlayout.html.erbで(すなわちapplication.html.erb)、あなたはそれ以外の場合は、あなたのyield文を置く場所:

<%= @inner_layout ? render(:partial => "#{@inner_layout}") : yield %> 

assumtionはsublayout部分的なファイルがどこかに、独自のyield文を持っているということです。

関連する問題