6

我怎样才能root_path在我的application.js文件中获得项目?

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

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

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

4

3 回答 3

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;
    }
    
于 2011-01-24T21:49:07.883 回答
1

我的头文件中有这个。

<script type="text/javascript">
  var BASE_URL = '<%= root_url %>';
</script>
于 2013-03-27T09:29:13.307 回答
1

好吧,我发现最好的方法是利用 JS 的力量来做到这一点,比如:

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

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

window.location.hostname # localhost

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

于 2016-11-21T14:54:05.540 回答