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>

因此,例如视图 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_controller 中写入layout 'settings/master,你需要从这个继承命名空间控制器

于 2011-07-20T02:16:29.820 回答