在rails 3中为特定控制器和操作添加额外布局?

时间:2013-07-27 11:53:40

标签: ruby-on-rails ruby-on-rails-3

在我的application.html.erb中,我有一个标题部分。,我使用渲染标记

<%= render 'layouts/header' %>

因此,此标头适用于所有控制器和所有操作。

除了一个控制器外,我想要显示的下拉部分,除了标题部分之外还有 我想要像

这样的东西
<%= render 'layouts/dropdown' except_controller_anycontroller %>

当我把

render :partial => 'layouts/dropdown'  

它只是呈现下拉部分和所有其他布局都丢失(如页脚,标题,正文)。我想将额外的下拉部分仅添加到某些操作和控制器。

如何在Rails 3.2.13中实现这一目标?

2 个答案:

答案 0 :(得分:1)

用以下内容替换渲染:

 <%= render 'layouts/dropdown' unless @disable_dropdown %>

然后你可以在任何你喜欢的控制器中将disable_dropdown设置为true:

def test_method
  @disable_dropdown = true
end

在你的控制器过滤器中调用此方法,你不想在其中显示:

在第一种方法之上将其写在控制器之上:

before_filter :test_method

当您的请求到达此控制器时,它将自动被调用。

希望它会有所帮助。感谢

答案 1 :(得分:0)

我会建议像:

<%= render 'layouts/dropdown' unless params[:controller] == "controller_to_avoid" %>