Javascript application.js中的Rails根路径
如何在我的application.js文件中获得项目的Javascript application.js中的Rails根路径,javascript,ruby-on-rails,codemirror,Javascript,Ruby On Rails,Codemirror,如何在我的application.js文件中获得项目的根路径 我需要一个js插件(codemirror),它需要加载其他js文件。如果我说“/javascripts/needed_file.js”就可以了,但是如果我将我的项目部署到“/custom”呢 代码需要在整个项目中发挥其魔力,我希望它是UJS,所以它需要在一个静态javascript文件中 有什么解决方案/简单的技巧吗?没有漂亮的解决方案。我会尝试以下方法之一: 检查window.location.pathname。由此确定是从根目录
根路径
我需要一个js插件(codemirror),它需要加载其他js文件。如果我说“/javascripts/needed_file.js”就可以了,但是如果我将我的项目部署到“/custom”呢
代码需要在整个项目中发挥其魔力,我希望它是UJS,所以它需要在一个静态javascript文件中
有什么解决方案/简单的技巧吗?没有漂亮的解决方案。我会尝试以下方法之一:
- 检查
window.location.pathname
。由此确定是从根目录运行还是从前缀url运行
- 添加类似于
var ROOT\u PATH=''的内容代码>位于布局文件顶部的某个位置
- 使用这个相当粗糙的函数(我怀疑它可能会与一些HTML5脚本属性冲突):
我的头文件中有这个
<script type="text/javascript">
var BASE_URL = '<%= root_url %>';
</script>
var BASE_URL='';
好吧,我发现最好的方法就是利用JS的强大功能,比如:
window.location.origin # http://localhost:3000/
它将为您提供完整的主机名、http://
和端口号。就像在本地运行Rails服务器一样,它将为您提供:http://localhost:3000
window.location.hostname # localhost
它只会告诉你主机名,而不会告诉你端口或HTTP。如果Rails服务器在本地运行,它将为您提供:
localhost
我的站点中实际上有一个指向主页的链接。。。因此,它就像$('#header a').attr('href')一样简单。虽然还很老套,但它很管用,所以我没什么可抱怨的。。谢谢
方法是我认为最好的方法(因为有一天你可以更改你的横幅、更改链接、更改选择器等等)
window.location.hostname # localhost