我怎样才能root_path
在我的application.js文件中获得项目?
我需要它用于需要加载其他 JS 文件的 js 插件( codemirror )。如果我说“/javascripts/needed_file.js”,这一切都很好,但如果我将我的项目部署到“/custom”怎么办。
代码需要在整个项目中发挥它的魔力,我希望它是 UJS,所以它需要位于静态 javascript 文件中。
任何解决方案/简单的黑客攻击?
我怎样才能root_path
在我的application.js文件中获得项目?
我需要它用于需要加载其他 JS 文件的 js 插件( codemirror )。如果我说“/javascripts/needed_file.js”,这一切都很好,但如果我将我的项目部署到“/custom”怎么办。
代码需要在整个项目中发挥它的魔力,我希望它是 UJS,所以它需要位于静态 javascript 文件中。
任何解决方案/简单的黑客攻击?
没有漂亮的解决方案。我会尝试以下方法之一:
检查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;
}
我的头文件中有这个。
<script type="text/javascript">
var BASE_URL = '<%= root_url %>';
</script>
好吧,我发现最好的方法是利用 JS 的力量来做到这一点,比如:
window.location.origin # http://localhost:3000/
它会为您提供完整的主机名、带有http://
和端口号。就像在本地运行 Rails 服务器一样,它会给你:http://localhost:3000
window.location.hostname # localhost
它只会给你主机的名称,而不是关于端口或 HTTP 的信息。如果 Rails 服务器在本地运行,它将为您提供:localhost
.