2011-12-09 29 views
2

我試圖找出在Rails 3的資產管道玩的谷歌API哪裏是擺在Rails的3.1

"http://maps.google.com/maps/api/js?sensor=false" 

1日問題的API鏈接的最佳場所。它是最好的地方,鏈接的意見/佈局/ application.html.erb或資產/ JavaScript的/ application.js中

第二個問題

如果我正在寫一個JavaScript函數,得到其視圖中表單ID的參數,我在哪裏放置該JavaScript函數?它直接在資產/ javascripts/application.js或有其他地方把JavaScript ..

+0

這不是對您的問題的直接回答,但[RailsCasts視頻](http://railscasts.com/episodes/279-understanding-the-asset-pipeline)可以幫助您更好地瞭解資產管道。 –

回答

3

我不知道你是否可以把地圖API放入application.js。至少在我上次嘗試的時候它不適合我。

application.js的一般思想是,在那裏引用的所有內容都將在生產環境中自動縮小和壓縮。因爲這對地圖API來說是不可能的,所以我猜你應該把它放到你的views/layouts/application.html.erb

另外請注意,你可能不想在你的所有頁面上包含maps API。您可以定義一個本身引用application.html.erb的佈局,或者使用部分佈局,或者使用content_for將頁面僅包含在所需的位置。

我在過去做過的一件事(可能有更好的方法)是在佈局的head部分中定義一個佔位符,然後使用它來注入僅在少量頁面上需要的腳本。就像這樣:

application.html.erb

<head> 
other stuff 
<%= yield :scripts %> 
... 
</head> 

而且你的觀點,即要求谷歌地圖裏面:

<% content_for :scripts do %> 
<script type="text/javascript" ..... ></script> 
<% end %> 

任何東西content_for塊內將是你放置你的<%= yield :scripts %>輸出。

+0

能否詳細解釋如何使用partial和content_for將API僅包含在選定的地方? – Leahcim

+0

更新了答案 – Tigraine

+0

非常感謝,非常感謝 – Leahcim