Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/tfs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 3 javascript_include_标记用于管理部分_Ruby On Rails 3 - Fatal编程技术网

Ruby on rails 3 javascript_include_标记用于管理部分

Ruby on rails 3 javascript_include_标记用于管理部分,ruby-on-rails-3,Ruby On Rails 3,存储和引用站点管理部分的JS的最佳实践是什么 目前,我有一个application.js,它引用了很多js(供应商和应用程序)。我想将一些引用移动到另一个文件中,这样当用户不是管理员时就不会加载(不必要的) 我正在寻找以下行为: 如果用户不是管理员,请通过/=require\u树加载application.js中的所有内容,包括/assets/javascripts下的所有文件。 如果用户是admin,则加载普通用户将加载的所有内容。此外,加载一些特定的JS。我不确定将JS存储在哪里,因为我不希

存储和引用站点管理部分的JS的最佳实践是什么

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

我正在寻找以下行为:

  • 如果用户不是管理员,请通过
    /=require\u树加载application.js中的所有内容,包括
    /assets/javascripts
    下的所有文件。
  • 如果用户是admin,则加载普通用户将加载的所有内容。此外,加载一些特定的JS。我不确定将JS存储在哪里,因为我不希望它被
    require\u tree

  • 如果您对代码的存储位置和调用方式有任何建议,我们将不胜感激。

    也许您可以这样做。创建一个
    admin\u application.js
    文件,该文件需要管理员用户所需的所有
    .js
    代码,不包括
    require\u树
    指令,并维护一个未更改的
    application.js
    ,该文件包含非管理员用户的所有要求和内容。
    如果它们共享一个共同的布局,那么在头标签中放入一些逻辑来处理这两种情况就足够容易了。例如:

    application.html.erb

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

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

    MurifoX,这行不通。我有几乎相同的问题,当您将js放入assets/javascript rails中时,会自动加载它。有没有更好的建议来解决这个问题?Thnx我应该将管理文件保存在单独的目录中吗?我应该在非管理员JS中调用require树吗?如果您在布局页面上加载的任何javascript文件上放置
    require_树
    ,它将只加载资产/javascript文件夹中的所有
    .JS
    文件。如果您想要更多控制,不要使用require_tree指令,而是手动要求所有需要的javascript。这很容易出错,但它可以工作。