1

いつものようにビュー/レイアウトに application.html.erb があり、コンテンツには <%= yield %> があります。現在、さまざまなページ (プロファイル、アカウント、通知など) を保持するユーザー アカウントの設定ページを作成しています。

コントローラー/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

Settings 名前空間の一部であるすべてのコントローラーについて、「常にビューをレンダリング」したいと思います。特に、views/settings/master.html.erb を含みます。

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

たとえば、view settings/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)

なるべき

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

2 に答える 2

0

これを使用して、haml を使用してネストされたサブ レイアウトを持つマスター レイアウトを作成することをお勧めします。

このメソッドを application_helper.rb に追加します

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

レイアウト/application.html.haml

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

レイアウト/single_column.html.haml

= inside_layout do
  .middle
    = yield        

レイアウト/two_column.html.haml

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

列レイアウトは通常のレイアウトと同じように使用できるようになりましたが、マスター歩留まりにネストされています。inside_layout 呼び出しでレイアウトに名前を付ければ、ネストされたレイアウトにネストされたレイアウトをさらに作成することもできます。

それが役に立てば幸い :)

于 2012-05-15T01:10:13.853 に答える
0

レイアウト 'settings/masterを settings_controller に書き込み、このコントローラーから名前空間のコントローラーを継承する必要があります

于 2011-07-20T02:16:29.820 に答える