想要在我的application_layout中定义一个部分,但在特定情况下覆盖它可能吗?

时间:2010-12-07 03:22:01

标签: ruby-on-rails layout

说我的应用程序布局就像有:

<div id=container>

<div id=content>
<%= yield %>
</div>
</div id=sidebar>
   <div id=top></div>
   <div id=bottom></div>
</div>
  1. 现在在about页面上,我想隐藏侧边栏部分,我该怎么做?
  2. 在联系页面上,我想覆盖sidebar.bottom部分的内容?那可能吗?

1 个答案:

答案 0 :(得分:1)

在你的application_controller.rb

before_filter :enable_sidebar
def enable_sidebar
  @show_sidebar = true
end

在你的行动中:

def about
  @show_sidebar = false
end

在您的布局中

<% if @show_sidebar %>
  <div id="sidebar">
  ...
  </div>
<% end %>

对您的联系页面使用类似的方法,或使用符号值而不是布尔值来选择不同的侧栏变体。这个想法是一样的:设置一个默认值,然后根据每个操作的需要设置一些控制器实例变量来改变。