首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >正确呈现Rails中每个控制器的多个布局

正确呈现Rails中每个控制器的多个布局
EN

Stack Overflow用户
提问于 2012-04-15 20:46:10
回答 1查看 7.4K关注 0票数 9

我在我的Users_controller:中定义了

layout "intro", only: [:new, :create]

下面是我的布局:Intro.html.haml

代码语言:javascript
复制
!!! 5
%html{lang:"en"}
%head
  %title Intro
  = stylesheet_link_tag    "application", :media => "all"
  = javascript_include_tag "application"
  = csrf_meta_tags
%body{style:"margin: 0"}
  %header
    = yield
  %footer= debug(params)

当我呈现一个调用intro作为布局的页面时,它会嵌套在我的application.html.haml文件中,这不是很好。

有没有办法避免这种不受欢迎的布局嵌套?

提前感谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-04-16 16:12:13

问题出在我的财务总监身上。我声明了如下所示的多个布局实例:

代码语言:javascript
复制
class UsersController < ApplicationController
  layout "intro", only: [:new, :create]
  layout "full_page", only: [:show]
  ...
end

不要这样做!第二个声明将优先,您不会得到您想要的效果。

相反,如果您的布局只是特定于操作,只需在操作中声明它,如下所示:

代码语言:javascript
复制
def show
...
render layout: "full_page"
end

或者,如果比较复杂,可以使用符号将处理过程推迟到运行时的方法,如下所示:

代码语言:javascript
复制
class UsersController < ApplicationController
  layout :determine_layout
  ...

  private
    def determine_layout
      @current_user.admin? ? "admin" : "normal"
    end
end
票数 53
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10165934

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档