我像往常一样在views / layouts中有一个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>
例如,视图设置/ 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)
答案 0 :(得分:0)
在settings_controller中写布局'设置/主,你需要从这个继承命名空间的控制器
答案 1 :(得分: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调用中命名布局,甚至可以创建嵌套在嵌套布局中的更多布局。
希望它有所帮助:)