2014-09-05 21 views
1

我正在構建一個使用CORS並具有公共API的Rails應用程序。爲了使API運行起來,客戶需要嵌入一個我在我的網站上託管的Javascript文件。因此,例如,他們將需要添加以下他們網站:如何爲CORS Rails應用程序公開Javascript資產?

<script type="text/javascript" src="http://www.mywebsite.com/assets/events.js"></script> 
<script type="text/javascript"> 
    //Call to public API method 
    track(); 
</script> 

眼下events.js文件位於/app/assets/javascripts/events.js我的應用程序。當我編譯並推送到Heroku時,它們全部被縮小到/assets/application-320d973ae0689d7f.js文件中。

我的問題是,我如何使event.js文件成爲一個獨立的文件,可以從我的應用程序通過直接URL路徑訪問外部網站?

+0

的可能重複[Rails的3.1管道 - 排除JavaScript文件(http://stackoverflow.com/questions/7061575/rails-3-1 -pipeline-exclude-javascript-file) – 2014-09-06 04:45:17

回答

0

我得到這個工作通過在public目錄中創建一個assets文件夾並將其移動到events.js文件中。我不必更改任何生產設置。

-1
  1. 預編譯你的資產,
  2. 接通服務靜態資產
  3. 發生在公共文件夾中的文件events.js

應該這樣做

3

公共

我們通過將javascript改成了public目錄之前實現此功能:

#public/events.js 
... 

這樣就可以給人們的以下網址:

<script src="http://domain.com/events.js"></script> 

雖然這將不是被綁進你的資產管道,它會給你一箇中央文件,你可以隨時呼叫。這是非常重要的,就像你有第三方引用文件一樣,你需要它們至少有一個參考點。


CORS

給人一種單一的引用是爲您的應用程序的CORS policy非常重要的,你必須給一個明確的「資源」來提供。我會建議使用rack-cors gem的這種的方式:

#config/application.rb 
config.middleware.use Rack::Cors do 
    allow do 
    origins '*' 
    resource '/events.js', :headers => :any, :methods => [:get] 
    end 
end 
+0

感謝您的迴應和建議!我只需將文件放在公用文件夾中就可以工作,就像您提到的那樣。爲了我的目的,這足以讓我的應用程序正常工作。但是我一定要在機架寶石上進行閱讀。再次感謝。 – 2014-09-09 05:54:49

相關問題