Ton*_*ony 12 layout ruby-on-rails
我有一个具有以下布局逻辑的控制器
layout 'sessions', :except => :privacy
layout 'static', :only => :privacy
Run Code Online (Sandbox Code Playgroud)
问题是Rails似乎忽略了第一行代码,并且布局"会话"不适用于任何操作.它只是认为为隐私呈现静态布局而其余部分没有布局.
有人知道怎么修这个东西吗?
gtd*_*gtd 25
这不起作用的原因是因为每个控制器只能有一个全局布局声明.在:only
和:except
条件仅仅是应该得到指定的布局行动,并已排除没有得到布局呈现的那些区别.换句话说,布局声明始终会影响使用默认渲染的所有操作.
要覆盖您,只需在操作中执行以下示例之一时指定布局:
render :layout => 'static'
render :action => 'privacy', :layout => 'static'
render :layout => false # Don't render a layout
Run Code Online (Sandbox Code Playgroud)
JRL*_*JRL 11
另一个选择是为布局调用定义一个方法,如下所示:
layout :compute_layout
Run Code Online (Sandbox Code Playgroud)
然后
def compute_layout
action_name == "privacy" ? "static" : "sessions"
end
Run Code Online (Sandbox Code Playgroud)
但是,当您想要根据某些运行时参数(如设置的变量)确定运行时的布局时,这实际上非常有用.在您的示例中,似乎没有必要.
归档时间: |
|
查看次数: |
6062 次 |
最近记录: |