在引导数据之前需要经过身份验证的用户

时间:2012-07-09 22:56:22

标签: ruby-on-rails ruby-on-rails-3 backbone.js haml bootstrapping

我有一个带有Backbone.js前端的简单rails 3.2应用程序。我在后端定义了以下before_filter和帮助器:

# my before_filter placed in most controllers
def require_user
  unless logged_in?
    redirect_to '/#login'
  end
end

def logged_in?
  !!current_user
end

def current_user
  @_current_user ||= session[:user_id] && Appuser.find_by_id(session[:user_id])
end

这非常适合限制对登录用户的大多数操作的访问。但是,我也将数据引导到我的Backbone.js集合中,在我的主应用程序模板(haml)底部带有<script>标记:

!!!
%html{:lang => "en"}
  %head
    %title InfoUser
    = stylesheet_link_tag    "application", :media => "all"
    = javascript_include_tag "application"
    = csrf_meta_tags
    %script 
      $(document).ready(function(){ App.init(); });

  %body

    -# Layout markup

    :javascript
      projects.reset(#{Project.all.to_json})
      groups.reset(#{Group.all.to_json})
      users.reset(#{User.all.to_json})

  = render "layouts/templates"

问题是,即使未经身份验证的用户访问应用程序并立即重定向到登录页面,此引导脚本仍会添加到页面底部,并且所有数据都会显示在集合中。

在haml中是否有办法检查用户的状态,或者是否有其他方法可以处理等待用户通过身份验证的引导?

1 个答案:

答案 0 :(得分:1)

我不确定只有在用户登录时才要执行哪个部分,但你可以这样做:

- if logged_in?
  -# code you want to run here

例如,

- if logged_in?
  :javascript
    $(document).ready(function(){ App.init(); });