管理员部分的javascript_include_tag

时间:2012-08-02 18:14:36

标签: ruby-on-rails-3

为网站的管理部分存储和引用JS的最佳做法是什么?

目前,我有一个引用了很多JS(包括供应商和应用程序)的application.js。我想将一些引用移动到另一个文件中,以便在用户不是管理员时不会(不必要地)加载它。

我正在寻找以下行为:

  1. 如果用户不是管理员,请通过/assets/javascripts
  2. 加载application.js中的所有内容,包括//= require_tree .下的所有文件
  3. 如果用户是admin,请加载普通用户将加载的所有内容。另外,加载一些特定的JS。我不知道在哪里存放JS因为我不希望它被require_tree
  4. 接收

    有关存储代码的位置以及如何调用代码的任何建议都将非常感谢。

1 个答案:

答案 0 :(得分:2)

也许你可以做这样的事情。创建一个admin_application.js文件,该文件需要管理员用户所需的所有.js代码,不包括require_tree指令,并维护一个具有所有要求和内容的未更改application.js对于非管理员用户。
如果它们共享一个共同的布局,那么在头标记中放置一些逻辑来处理这两种情况就很容易了。示例:

application.html.erb

<header>
  <% if current_user.is_admin? %>
    <%= javascript_include_tag "admin_application" %>
  <% else %>
    <%= javascript_include_tag "application" %>
  <% end %>
</header>

我认为这是解决问题的一种简单而公平的方法。