为SignedIn设计布局&签下资源

时间:2010-10-24 03:21:29

标签: ruby-on-rails ruby-on-rails-3

我的应用有两种UI状态:   - 签到   - 退出

我一直在使用以下内容根据用户是否使用Devise登录或注销来确定要使用的应用/视图/布局:

  # Devise, way of using a different Layout for all the devise/non-signed in Views
  layout :layout_by_resource
  def layout_by_resource
    if devise_controller?
      "application_unauthorized"
    else
      "application"
    end
  end

问题是你登录后使用错误的布局?想法?

我只想使用“application_unauthorized”,如果它是设计&用户未登录。

2 个答案:

答案 0 :(得分:5)

实际上,您应该使用user_signed_in?方法检查用户是否已登录。我注意到即使用户当前未登录,current_user?也可能会返回true

所以你的代码看起来像这样:

layout :layout_by_resource
def layout_by_resource
  if user_signed_in?
    "application"
  else
    "application_unauthorized"
  end
end

答案 1 :(得分:4)

就我个人而言,我会使用if current_user?而非devise_controller?

进行检查