2010-02-16 2 views
2

액션에서 렌더링을 작성하려했지만 레이아웃 동작이 다른 이유는 무엇입니까?컨트롤러에서 레일이 어떻게 작동합니까? 레이아웃을 사용하지 않는 이유는 무엇입니까?

def show 
    # assuming we have a partial in app/views/shared/_panel_show.html.erb 
    #render "shared/_panel_show" # have layout 
    #render "/shared/_panel_show" # without layout 
    #render "shared/panel_show" # Template is missing 
    #render :partial => "shared/panel_show" # without layout 
    render :partial => "/shared/_panel_show",:layout => "application" # have layout 
end 

부분을 렌더링하고 컨트롤러 레이아웃을 따르고 싶습니다.

+0

어떻게 다른가요? 렌더링 : partial => "/ shared/panel_show", : layout => "application"? – marcgg

+0

예, 할 수 있습니다. 하지만 컨트롤러 정의 레이아웃을 사용하고 싶습니다. 글로벌 레이아웃을 변경하면 많은 부분을 수정하고 싶지 않습니다. – allenwei

답변

3

부분적인 부분은보기의 일부만 렌더링하고 레이아웃없이 렌더링하는 것입니다.

부분적으로 렌더링하는 shared/full_panel_show와 같이 새로운보기 (및 컨트롤러에서의 작업)를 만드는 것이 좋습니다.

<%= render :partial => 'shared/panel_show' %> 

지금 컨트롤러에 새로운 뷰 렌더링 : 그것은보기 대신의에서
def show 
    render :action => 'shared/full_panel_show' 
end 

당신이 쇼를보기 도핑 무엇에 따라, 당신은 단지 부분을 렌더링 할 수있다.

+0

설명하는 방법 # 렌더 "공유/_panel_show"# 레이아웃 있습니다 – allenwei

0

난 그냥 다음 "부분"방법을 제거 밑줄을 추가

render 'shared/_panel_show', layout: "layouts/application" 

컨트롤러 레이아웃 부분을 렌더링 할 수있는 해결책을 가지고 있습니다.