[英]More than one layout for a controller
是否可以做这样的事情:
class SimulationController < ApplicationController
layout "generic", :only => [:login, :invalid]
layout "menubar", :except => [:login, :invalid]
由于某种原因,我的login
页面仍然使用菜单栏布局(我可以知道,因为菜单栏将显示在顶部)。 如果我注释掉第三行,菜单栏将消失。 因此,似乎两个布局都被一个接一个地应用。
但是,如果我注释掉layout "generic"
位,那么它将是黑白的,这意味着未应用CSS样式表。
您看起来好像在尝试在不同的运行时条件下应用不同的布局。 解决此问题的最简单方法是对布局使用方法参考。
例如: -
class ResourceController < ActionController::Base
layout :choose_layout
private
def choose_layout
if [ 'signup', 'login' ].include? action_name
'login_layout'
else
'admin_layout'
end
end
在标题“布局类型”下查看ActionController :: Layout的Rails API参考 。
看看这张票,您的问题似乎很相似:[ http://dev.rubyonrails.org/ticket/8867]
一种方法实际上是在您的行动之内。
def login
render :action => "login", :layout => "generic"
end
您也可以将实际的“ menubar” html局部化,并在某些条件下关闭渲染。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.