在application.js中运行root_path

ale*_*poi 6 javascript ruby-on-rails codemirror

如何root_pathapplication.js文件中获取项目?

我需要它来为需要加载其他JS文件的js插件(codemirror).如果我说"/javascripts/needed_file.js",这一切都很好,但是如果我将项目部署到"/ custom"会怎么样.

代码需要在整个项目中完成它的魔力,我希望它是UJS,所以它需要在一个静态的javascript文件中.

任何解决方案/简单的黑客?

Jak*_*mpl 6

没有漂亮的解决方案.我会尝试以下方法之一:

  • 检查window.location.pathname.从中确定是从根运行还是从前缀url运行.

  • <script type="text/javascript" charset="utf-8">var ROOT_PATH = '<%= Rails.root_path %>';</script>在布局文件的顶部添加类似于某处的内容.

  • 使用这个非常hackish函数(我怀疑它可能会破坏一些HTML5脚本属性):

    function urlOfCurrentFile() {
      var scripts = document.getElementsByTagName("script");
      return scripts[scripts.length - 1].src;
    }
    
    Run Code Online (Sandbox Code Playgroud)