2011-02-03 5 views
0

레일즈 2.3.8에서 3.0.3으로 업그레이드하고 중첩 된 레이아웃을위한 코드가 작동하지 않습니다. 내 주요 응용 프로그램 레이아웃에서render : inline => "<%= yield %>"이 작동하지 않습니다.

내가 라인을 가지고

<퍼센트 = controller.sub_layout %> 다음이 컨트롤러에 보이는

: 문제는

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

을, 이 렌더링되지 않습니다! 레이아웃에 직접 < % = yield %> 문을 넣으면 제대로 작동합니다. 그래서 문제는 여기서 무슨 일이 일어나고 어떻게 해결할 수 있습니까?

이 레일 2.3.8

답변

0

그래서 당신이 모든이의 배경 좀 더 가지고는 전체 하위 레이아웃 접근 방식은이 블로그 게시물 (Sorta Nested Layouts)을 기반으로했습니다 (해결책은 설명 섹션에 있습니다)

대신 제어기 방법 sub_layout 제조하는 sublayout를 사용하는 제어기가 가변 설정하는 before_filter 방법을 정의 할 필요 : 메인 layout.html.erb에서 다음

def inner_layout 
    @inner_layout = 'layouts/sublayout_partial_name' 
end 

(즉 application.html.erb), 그렇지 않으면 당신의 yield 문을 둘 것입니다 여기서

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

assumtion는 sublayout 일부 파일이 어딘가에 자신의 yield 문을 것입니다.

관련 문제