如何在我的 application.js 文件中了解项目的root_path
?
我需要一个需要加载其他JS文件的js插件( codemirror )。如果我说“/javascripts/needed_file.js”,这一切都很好,但如果我将项目部署到“/ custom”会怎么样。
代码需要在整个项目中发挥作用,我希望它是UJS,所以它需要在一个静态的javascript文件中。
任何解决方案/简单的黑客攻击?
答案 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
。