1

평소와 같이보기/레이아웃에 application.html.erb가 있고 내용에 < % = yield %>가 있습니다. 이제 여러 페이지 (프로필, 계정, 알림 등)를 보유하고있는 사용자 계정에 대한 설정 페이지를 작성하고 있습니다. 제품은 매일 컨트롤러 용네임 스페이스 컨트롤러 3.1에 대한 템플릿 상속

컨트롤러/settings_controller.rb

class SettingsController < ApplicationController 
end 

컨트롤러/설정/account_settings_controller.rb

class Settings::AccountSettingsController < ApplicationController 
end 

컨트롤러/설정/profile_settings_controller.rb

class Settings::ProfileSettingsController < ApplicationController 
end 

설정 네임 스페이스의 "항상 렌더링하려면 예를 들어

<markup> 
    <%= yield(:settings_content) %> 
</markup> 

그래서이 들어 특정보기/설정/master.html.erb에보기 ",보기 설정/profile_settings/edit.html.erb는

<% content_for(:settings_content) do %> 
    <markup> 
    </markup> 
<% end %> 

아니에요 포함됩니다 어디에서 시작해야하는지. 아마도 내 컨트롤러는 같아야합니다

class Settings::AccountSettingsController < SettingsController 
end 

모든 안내를 환영합니다.

편집 :

Rendered settings/account_settings/edit.html.erb within layouts/application (19.6ms) 

settings_controller에서

Rendered settings/master.html.erb within layouts/application (19.6ms) 
Rendered settings/account_settings/edit.html.erb within settings/master (19.6ms) 

답변

0

쓰기 레이아웃의 설정/마스터되고, 당신은 내가 제안이 하나

+0

지금 제가 사용하고있는 것입니다. 문제는 설정/마스터가 레이아웃/응용 프로그램을 '상속'하도록하여 <%= yield %>이 설정/마스터의 내용을 분출하도록하는 것입니다.나는 지금 아주 가난한 해결책을 사용하고 있습니다. 그래서 제 자신의 질문에 답하는 대신에 나는 이것을 해결할 다른 방법을 기다리고 있습니다. –

0

에서 네임 스페이스 컨트롤러를 상속해야한다 이것을 사용하여 중첩 된 하위 레이아웃이있는 마스터 레이아웃을 haml :

을 사용하여 만듭니다.3210

은/application.html.haml

!!! 
%html 
    %head 
    -# your header content 
    %body 
    .content 
     = yield 

레이아웃/single_column.html.haml 당신의 application_helper.rb에

= inside_layout do 
    .middle 
    = yield   

레이아웃/two_column을

# Allows easy using nested layouts 
    def inside_layout(layout = 'application', &block) 
    render :inline => capture_haml(&block), :layout => "layouts/#{layout}" 
    end 

레이아웃을이 방법을 추가 할 수 있습니다. html.haml

= inside_layout do 
    .left 
    -# your shared left content 
    .right 
    = yield   

이제 열 레이아웃을 일반 레이아웃처럼 사용할 수 있지만 마스터 레이아웃으로 중첩됩니다. inner_layout 호출에서 레이아웃의 이름을 지정하면 중첩 된 레이아웃에 중첩 된 레이아웃을 더 만들 수도 있습니다.

도움이 되길 바랍니다. :)