2

好的,我以爲我知道我在做什麼,而我卻被互聯網上大量互相沖突的資源所困惑。什麼是將我的Rails 3應用程序從Prototype轉換爲jQuery的最新最有效的方法?

我有一個rails 3應用程序。我想從這個應用程序中完全取出原型,並只使用jQuery。其中一些代碼位於rjs文件中,但大部分代碼都位於項目控制器中的format.js {}方法中。

我發現this railscast,這使得它看起來像我可以做任何給定的動作如下:

def action_name 
    #do stuff 
    respond_to do |format| 
     format.js 
     #format other types 
    end 
end 

,然後把我想在一個名爲action_name.js.erb執行我的jQuery代碼。

但我想這樣做了以後,從我的應用程序移除原型(改變我的rails.js文件到jQuery的,但不包括在我的網頁標題中的prototype.js),我得到這個錯誤:

RJS error: 

TypeError: $ is not a function 

它爲什麼要調用rjs而不能識別我的jquery?我應該使用rjs模板而不是.js.erb文件?我以爲我從應用程序中刪除了原型 - 我錯過了什麼?

最重要的是,是否有一種明確的方式來完成從Prototype到jQuery的這種從2011年2月開始的Rails 3的最新轉換?我很困惑這樣做的最佳方式,以及我應該使用什麼(rjs文件或js.erb文件)。

非常感謝,如果需要,我可以編輯更多信息。

+0

你確定jQuery被正確包含在你的輸出中嗎?例如:<%= javascript_include_tag「https://ajax.googleapis.com/ajax/libs/jquery/1.5.0/jquery.min.js」%> – 2011-02-10 19:05:25

+0

是的 - 如果我查看我的頁面源代碼,包括一個jquery.min的本地副本,以及rails.js和application.js(按該順序) – Sarah 2011-02-10 19:09:17

回答

3

爲軌道3 和你一樣: 安裝不顯眼的j查詢適配器足夠的開發環境,因爲這只是用來安裝和拆卸js文件

gem "jquery-rails" 

然後bundlde安裝後運行

bundlde install 
rails generate jquery:install #--ui to enable jQuery UI --version to install specific version of JQuery (default is 1.5) 

這需要照顧的數據 - HTML5標籤ahook jQuery代碼的不顯眼,如遠程ajax 請求或遠程提交。

爲了使用RJS時,defult原型傭工應該被重新定義爲發射jQuery代碼 要做到這一點,使用jrails寶石

gem 'jrails', :git => 'https://github.com/theworkinggroup/jrails.git' 

這需要舊的原型功能保健喜歡觀察形式,DOM插入和更換方法等。

有了這個,你可以繼續使用您的RJS temlates或寫渲染內聯JS:更新

因爲RJS的侷限性(複雜的JS仍然應該寫爲字符串頁面resopnse)的可能,人們更喜歡JS .erb雖然它是地球上兩個最醜陋的代碼格式放在一起,jeez

0

你有沒有看看:

https://github.com/rails/jquery-ujs

一個js.erb文件應包含的東西,如:

<% if true? %> 
$("#comment-notice").html('<div class="flash notice"><%= escape_javascript(flash.delete(:notice)) %></div>'); 
<% end %> 

你最好刪除所有.rjs擴展

相關問題