在application.js中运行root_path

时间:2011-01-24 21:40:15

标签: javascript ruby-on-rails codemirror

如何在我的 application.js 文件中了解项目的root_path

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

代码需要在整个项目中发挥作用,我希望它是UJS,所以它需要在一个静态的javascript文件中。

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

3 个答案:

答案 0 :(得分:6)

没有漂亮的解决方案。我会尝试其中一种方法:

  • 检查window.location.pathname。由此确定是从root运行还是从前缀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;
    }
    

答案 1 :(得分:1)

我的头文件中有这个。

<script type="text/javascript">
  var BASE_URL = '<%= root_url %>';
</script>

答案 2 :(得分:0)

嗯,我找到的最好方法是利用JS的强大功能,例如:

window.location.origin # http://localhost:3000/

它将为您提供完整的主机名,http://和端口号。就像在本地运行Rails服务器一样,它会为您提供:http://localhost:3000

window.location.hostname # localhost

它只会给你主机的名称,而不是端口或HTTP。如果在本地运行Rails服务器,它将为您提供:localhost