2010-09-25 55 views
3

這裏是我想要做的....當用戶登錄並重定向到登錄頁面時,我想運行一些jQuery Ajax來獲取並注入一些內容。Rails 3 - 包括視圖上的JavaScript?

我原本是在我的application.js文件中,但問題在於代碼是在那裏沒有登錄的用戶,這意味着我必須添加邏輯來說明這似乎並不清潔。

我想要的是,當視圖被稱爲能夠包括JavaScript ....我試圖粘貼它在視圖文件本身,但失敗,因爲它是在JQUERY之前加載它是在底部該頁...

Rails 3大師如何處理這個?謝謝!

回答

5

那麼,你可以在頂部包含jQuery文件。

如果這不是一個選項,在下面的jQuery的佈局添加<%= yield :javascript %>包括做:

<% content_for :javascript do %> 
    <script type="text/javascript"> 
     // code goes here 
    </script> 
<% end %> 

它將被放置在適當的位置佈局。 (但是,爲了緩存的目的,我建議您將Javascript寫入外部文件,並在必要時將其包含在內,而不是使用內聯Javascript。)只需要良好的練習。)

+0

這就是我以上的想法,但它似乎很重。由於未登錄的用戶必須下載所有這些東西......並且我構建了一個APP,每個視圖都會有這樣的情況,我可以在哪裏存儲視圖特定的JS? – AnApprentice 2010-09-25 18:28:39

+0

我認爲他已經這樣做了。問題是如果沒有jQuery,代碼將不會運行,而jQuery在那個時候沒有加載。 – 2010-09-25 18:30:27

+0

@FRKT - 嘿。 Lolfail。已添加更多信息的答案;現在刪除了第一位,因爲它不再相關。謝謝:) – Matchu 2010-09-25 18:32:52

1

您會使它更容易你自己如果你剛纔在文檔中加載jQuery。如果您從Google API中加載它,則無論如何它都會緩存在客戶端的瀏覽器中,因此頁面加載時間的增加可以忽略不計。

+0

謝謝,但讓我說我想加載jQuery最後(facebook風格)的任何選項? – AnApprentice 2010-09-25 18:29:08

+0

更好的是,,,我怎樣才能爲一個視圖添加一個自定義的JS文件,並將其追加到頁面的末尾,就像在應用程序佈局文件中加載jquery後拋棄它? – AnApprentice 2010-09-25 18:29:40

+0

@TheApprentice:我想你會走運,除非你重寫你的代碼,不需要一個沒有加載的庫。 ;-)另外,你確定你應該這樣做嗎?爲什麼你需要通過JavaScript加載這些數據,而不是渲染它在服務器端? – 2010-09-25 18:36:31

2

從Google CDN加載jQuery並在加載後查看特定的JS。如果您擔心未登錄用戶的着陸頁速度,請將其緩存在頁面中。

如果您還想進一步優化,請使用像Sqiud這樣的反向代理。您也可以使用Jammit或Asset Packager(http://synthesis.sbecker.net/pages/asset_packager)來最小化您的JavaScript和CSS。

建議一句話,在完成應用程序編寫之後,您應該將注意力集中在性能上,這很容易陷入優先級較低的問題中,這會阻礙您的開發工作。