我有一个名为" Pages"大约5页(视图),我已经渲染了一个名为" page.html.erb"的布局。 所以我的" Pages"控制器有:
class PagesController < ApplicationController
layout 'page'
我想要我的&#34; page.html.erb&#34;要使用的布局&#34; application.html.erb&#34;默认情况下。如何制作自定义布局&#34; page.html.erb&#34;自动拥有&#34; application.html.erb&#34;继承/渲染在其中?
答案 0 :(得分:4)
如果您未在控制器中指定布局,Rails将默认呈现您的application
布局。如果您遵循此约定,则可以使用application.html.erb
作为整体网站页面结构(也是包含样式表和javascript的好地方)。然后,您可以在布局中使用= yield
来指定应该呈现控制器视图的位置。
默认情况下,控制器操作将呈现其相应的视图。例如,如果控制器foo
中有操作bars_controller.rb
,则除非您重定向或指定要在操作中呈现的其他视图,否则Rails将呈现/app/views/bars/foo.html.erb
。事实上,如果您要执行的所有动作foo
都是渲染页面,您甚至不需要在控制器中定义操作!
约会超过配置我的朋友。
答案 1 :(得分:3)
我通常将布局拆分为较小的部分(页眉,页脚,HTML HEAD等)。这样我可以通过将不同的部分组合在一起来使用多个布局。
答案 2 :(得分:0)
我也遇到了类似的挑战,但我希望我的主页与其他页面具有略微不同的标题
这是我的工作方式:
我要做的就是在app/views/shared
目录中创建2个标头部分:
_home_header.html.erb
_other_header.html.erb
然后我在app/views/layouts/application.html.erb
文件中以这种方式引用了它:
<%= render partial: '/shared/home_header' if params[:controller] == 'homes' %>
<%= render partial: '/shared/other_header' if params[:controller] != 'homes' %>
也可以使用明确的,有条件的方式来引用它:
<% if params[:controller] == 'homes' %>
<%= render partial: '/shared/home_header' %>
<% elsif params[:controller] != 'homes' %>
<%= render partial: '/shared/other_header' %>
<% else %>
<% end %>
steve klein感谢您的评论,这使我对此有所了解。
仅此而已。
我希望这会有所帮助