2012-08-02 42 views
2

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

目前,我有一个引用了很多JS(包括vendor和app)的application.js。我想将一些引用移动到另一个文件中,以便在用户不是admin时不加载(不必要地)。

我在寻找以下行为:

  1. 如果用户不是管理员,通过//= require_tree .
  2. 如果用户是管理员加载的application.js包括/assets/javascripts下的所有文件的一切,一切都加载一个普通用户会加载。另外,加载一些特定的JS。我不知道在哪里存储JS,因为我不希望它被require_tree

被拾起在哪里存储代码,以及如何调用它的任何建议,将不胜感激你。

回答

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> 

我认为这是一个简单的和公平的方法来你的问题。

+0

我应该将管理文件保存在一个单独的目录中吗?我应该在非管理JS内调用require树吗? – Dean 2012-08-03 02:27:56

+0

如果您想要更多控制,请不要使用require_tree指令并手动要求所有您需要的JavaScript。这很容易出错,但是它可以工作。 – MurifoX 2012-08-03 11:43:13

+0

MurifoX,这不起作用。 我有几乎相同的问题,当你把资产/ JavaScript的轨道js自动加载它。有没有更好的解决方案来解决这个问题? thnx – drmwndr 2012-08-02 20:57:23