Rails视图中的布局名称

4
如何在视图中打印当前布局的名称?
示例
puts controller.current_layout

谢谢。

1
可能是在视图中获取当前布局名称的Rails3的重复问题。 - Andrew Marshall
3个回答

10

这适用于Rails 3.0.7:

controller.send :_layout

显然,这是一个私有方法,所以请自行承担使用风险。


5

这对我有用:response.layout

更新: 确实,在rails3+中response.layout不起作用,因此我通常在每个布局内定义一个@layout_name变量。

application.html.haml的示例:

- @layout_name = 'application'
!!! Strict
%html
...

4
这在Rails 3上不起作用。#layout现在是ActionDispatch::Response内部的一个私有方法。 - cpjolicoeur

4

<%= controller.active_layout %> 可以获取布局文件的名称。因此,layout 'application' 将返回 layouts/application.html.erb

在Rails 2.1.0及以上版本中。


当我想为这样的一个动作设置布局时,出现了问题:"layout 'widget', :only => [:account, :verify]"。在这种情况下,controller.active_layout总是返回"widget"。有解决方法吗? - xpepermint

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接