当前位置:  开发笔记 > 编程语言 > 正文

Ruby on Rails - 渲染布局

如何解决《RubyonRails-渲染布局》经验,为你挑选了2个好方法。

我正在尝试将网站分成两部分.一个应该使用应用程序布局,一个应该使用管理布局.在我的application.rb中,我创建了一个函数如下:

def admin_layout
  if current_user.is_able_to('siteadmin')
    render :layout => 'admin'
  else
    render :layout => 'application'
  end
end

在控制器里,它可能是我放的一个或另一个

before_filter :admin_layout

这适用于某些页面(其中只是文本),但对于其他页面,我得到了经典错误:

You have a nil object when you didn't expect it!
You might have expected an instance of Array.
The error occurred while evaluating nil.each

有没有人知道我错过了什么?我该如何正确使用渲染和布局?



1> molf..:

该方法render实际上将尝试呈现内容; 当你想要做的就是设置布局时,你不应该调用它.

Rails有一个模式用于所有这些.只需传递一个符号layout,将调用具有该名称的方法,以确定当前的布局:

class MyController < ApplicationController
  layout :admin_layout

  private

  def admin_layout
    # Check if logged in, because current_user could be nil.
    if logged_in? and current_user.is_able_to('siteadmin')
      "admin"
    else
      "application"
    end
  end
end

详情请见此处.



2> 小智..:

也许您需要先检查用户是否已登录?

def admin_layout
  if current_user and current_user.is_able_to 'siteadmin'
    render :layout => 'admin'
  else
    render :layout => 'application'
  end
end

推荐阅读
凹凸曼00威威_694
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有