簡體   English   中英

在application.js中運行root_path

[英]Rails root_path in application.js

如何在application.js文件中獲取項目的root_path

我需要它來為需要加載其他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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM