2010-02-11 32 views
5

測試&JS傭工爲Rails的發行說明3.0測試版,它說:的Rails 3.0與jQuery

「非侵入式JavaScript傭工爲原型,jQuery的司機」

所以我怎麼設置Rails 3使用jQuery呢?它仍默認載入所有Prototype庫。

我把這個意味着Rails 3中已建成類似jRails插件功能,但也許我誤解:)

此外,作爲獎金問題,如果我使用的原型是有辦法讓Rails加載縮小版本,甚至更好的單個連接JS文件來減少http請求?

謝謝。

回答

0

我不知道Rails 3,但我會嘗試回答獎金問題。

你可以把任何你想要的公共/ javascript目錄。默認情況下,它會加載文件:prototype.js,effects.js,dragdrop.js和controls.js(read more)。如果要壓縮所有js文件並將其發送到一個文件中,則可以使用此plugin

當然,它不適用於動態生成的js文件。

+0

啊方便,謝謝:) – firecall 2010-02-13 21:33:24

0

我也在努力與嘗試我的老AJAX轉換與軌道3

從我可以告訴,他們搬到增加了一個data-remote=true的結構,當你添加:remote => true喜歡的東西link_to這應該取代rails3中的link_to_remote,所以沒有更多的onclick方法調用Ajax方法。

那麼,Ajax如何在Rails 3中工作呢?那麼,你應該有JavaScript方法,當你點擊鏈接有一個屬性爲data-remote=true並做了一些事情,但實際上並沒有將它們包含在Rails中(從我所知道的情況來看),它是庫不可知的,因爲你可以編寫這些方法來觀察原型中的點擊,jquery,自己編寫它們或者其他任何東西。

我在github一些JavaScript上手,將監視這些事件:

prototype

jQuery

我認爲,以實際加載的jQuery的而非原型,你'將不得不下載到public/javascripts並手動指定jQuery,使用javascript_include_tag :all或覆蓋javascript_include_tag(不推薦)

+0

我錯了Rails不包括一個UJS腳本..它在公共/ javascripts/rails.js我想我只是錯過了它。 – 2010-02-12 01:28:29

1

Unobtrusive JS沒有引用PrototypeHelper方法,而是引用了遠程表單和鏈接等。其概念是,您在form_for或其他幫助方法中包含:remote => true,然後名爲rails.js的驅動程序將查找這些遙控器並攔截submitclick事件並通過xhr發送它們。

要使用jquery,只需要用jquery ujs驅動程序替換原型ujs驅動程序(隨附rails),該驅動程序在rails 3 beta版本發佈之前即已提取到其自己的repo中。你可以找到它here

2

當你創建一個Rails 3應用程序,只需沿着-J PARAM傳遞以及:

$ rails app_name -J 

這將跳過包括原型庫。現在,您只需將最新的jquery.js文件放入public/javascripts目錄。一旦你這樣做了,你還需要jQuery版本的rails.js文件。你可以在這裏:

http://github.com/rails/jquery-ujs/blob/master/src/rails.js

編輯:您需要在您的佈局,以獲得功能上這些文件。你可以做到這一點:

<%= javascript_include_tag "jquery", "rails" %> 

希望這有助於!

+0

是的,這就是我正在尋找的答案:)謝謝。 我想我認爲會有配置這個,也是一個配置使用縮小版本的部署目的。看起來像那是標準的做法和Rails應該按標準做的事情。爲什麼它包括未縮小的原型! – firecall 2010-02-13 21:31:13

+0

你可以使用我的插件來做到這一點:http://github.com/voxxit/assemblage – 2010-02-14 10:38:53

1

退房Google Closure

它可以將多個javascript文件到一個壓縮js文件。它甚至可以計算出您不使用的庫的哪些部分,並將其刪除。

+0

是的,我知道這一點。我已經使用手動工作流程來運行YUI Compressor,然後通過shell腳本運行CAT。但我真的只是想知道是否有一個內置的Rails方式或減少HTTP請求。似乎毫無意義包含如此多的非縮小版本作爲默認值:/ – firecall 2010-02-13 21:33:03