2012-01-03 51 views
4

我有點困惑。在很多關於stackoverflow的問題上,我讀到了你需要jquery-ujs來管理你的javascript代碼,特別是如果你想要這些銷燬鏈接做工作。如果我在此頁面上按照所有安裝說明進行操作,我必須說我無事可做。jquery.js和jquery-ujs.js的位置以及爲什麼銷燬鏈接不起作用

因爲我使用的Rails 3.1我必須遵循這樣的:

對於Rails的自動安裝,使用 「jQuery的軌道」 的寶石。將此放在您的Gemfile:
gem 'jquery-rails', '>= 1.0.12'
並運行:$ bundle install
這一步取決於你的Rails的版本。

a。對於的Rails 3.1,這些行添加到您的應用程序/資產/ Java腳本/ application.js中文件的頂部:

//= require jquery 
//= require jquery_ujs 

的Rails 3.1這是創建一個新的Rails應用程序後,已經完成了。

如果我跑$ rails generate jquery:install我得到以下的輸出:

deprecated You are using Rails 3.1 with the asset pipeline enabled, so this generator is not needed. 
      The necessary files are already in your asset pipeline. 
      Just add `//= require jquery` and `//= require jquery_ujs` to your app/assets/javascripts/application.js 
      If you upgraded your app from Rails 3.0 and still have jquery.js, rails.js, or jquery_ujs.js in your javascripts, be sure to remove them. 
      If you do not want the asset pipeline enabled, you may turn it off in application.rb and re-run this generator. 

好了,了無新意。但爲什麼我的銷燬鏈接仍然無效。所以我問自己問題這些jquery文件位於哪裏?當我閱讀另​​一個rails版本的jquery安裝指令時,他們總是告訴我將這些文件(jquery.js,jquery-ujs.js)複製到特定位置。只有作爲Ruby 3.1用戶,您不必這樣做。但爲什麼?我找不到這些文件。他們是否是jquery-rails gem的一部分?如果是,爲什麼我的銷燬鏈接仍然不起作用?這真的是jQuery的問題嗎?我的意思是,如果我將幫手從link_to更改爲button_to它工作。那麼只要它應該成爲jQuery的問題,怎麼會發生呢?這對我來說可能沒有關係,但我不想使用表單按鈕。此外,我不能相信像Rails這樣的應用程序在其通用生成的模板中包含這樣一個大問題。

那麼如何解決這個問題,而不需要更改link_to幫手,而不用離開javascript(Railscast)?

更新1

  • 佈局文件具有<%= javascript_include_tag "application" %>
  • config.assets.enabled = true設置

更新2

在這裏,源對於所提到的破壞鏈接:

<%= link_to 'Destroy', @post, confirm: 'Are you sure?', method: :delete %> 

通常應該刪除帖子,而是瀏覽器指向該帖子的位置,例如, http://domain/posts/2
如果你運行這個button_to而不是link_to它會工作,但它的表單按鈕。

更新3

好吧,銷燬環節工作在Firefox,但我是一個谷歌瀏覽器用戶,我希望它的工作有作爲。有沒有解決方案?

更新4

Chrome檢查拋出拋出:DOMException上線5122:var ret = matches.call(node, expr);

message: "SYNTAX_ERR: DOM Exception 12"

但在每一個超鏈接是否是一個破壞的鏈接或不出現此錯誤。
破壞鏈接拋出一個TypeError ,但我無法弄清楚它是來自jquery.js還是來自內置的chrome擴展。 jquery-ujs.js拋出錯誤消息是「Are you sure?」。這是由rails爲確認消息定義的文本。所以我刪除了確認選項,之後刪除工作。

如何使確認選項在Chrome中工作?

+0

你的佈局中是否有'<%= javscript_include_tag「應用程序」%>「? – 2012-01-03 03:12:25

+0

是的。在源代碼中,這裏還有兩個帶有_jquery.js_和_jquery-ujs.js_的

4

jquery.js和jquery_ujs.js由資產管道和jquery-rails gem動態地提供。它們不再存在於Rails 3.1應用程序的磁盤上。

通過請求/assets/jquery.js/assets/jquery_ujs.js與您的瀏覽器,您可以驗證它們是否正確地被服務。確保他們返回JavaScript而不是404/500錯誤。

+0

這回答了我可以在您的相當長且冗長的帖子中找到的唯一問題。我們不可能告訴你爲什麼你的銷燬鏈接不起作用,因爲你實際上沒有說什麼比「他們不工作」更多。點擊它們會發生什麼?你有任何的JavaScript錯誤?你有任何服務器端錯誤?你的日誌說什麼?在我們開始幫助您之前,您需要執行大量的調試步驟。 – meagar 2012-01-03 05:27:42

+0

謝謝。我得到了那條路徑的文件。知道是一個問題,爲什麼銷燬鏈接不起作用。我沒有進一步解釋它,因爲在這裏stackoverflow已經有很多這些問題。我會編輯我的問題。 – Marc 2012-01-03 05:40:41

+0

正確當然它不在rails應用程序內。但它確實存在於磁盤上。它位於vendor/assets/javascripts中的jquery-rails gem中。這可能有助於瞭解何時需要跟蹤僅指向jquery代碼的錯誤消息。 – 2012-09-05 20:46:26

1

看起來像一個JavaScript錯誤...您可以:

  • 發佈在Heroku上的頁面,在這裏我們可以看看
  • 移除所有的JavaScript代碼,直到它的工作原理,在添加回去,直到它失敗

此外,請確保你沒有包括jquery.js和jquery-ujs.js兩次(就像你在做什麼)。你曾經提到你有jquery.js和jquery-ujs.js腳本標記...不這樣做。

相反,你的應用程序/資產/ Java腳本/ application.js中應該是這樣的:

// 
//= require jquery 
//= require jquery_ujs 
//= require_tree . 

這將增加了jQuery的jquery_ujs,並在您的應用程序/資產/ JavaScript的文件夾中所有的JavaScript。

+0

準確地說,這是在我的應用程序/資產/ javascripts/application.js中,僅此而已。你可以從[github](https://github.com/lunij/wpr)獲取它。除了內置的jquery以外,沒有任何JavaScript代碼。我認爲這是Chrome和JQuery之間的問題。但是請自己嘗試一下。 – Marc 2012-01-04 11:11:45

+0

@lunij下載代碼和調試是我向人們收費的...如果您將代碼放在heroku上,並給出一個鏈接,我可以在不花費大量時間的情況下看到javascript,我會這樣做。 – 2012-01-04 14:38:09

+0

是的,你說得對。我會把它放在heroku上。對不起! – Marc 2012-01-04 16:45:14

0

幾周前,我剛剛停用了所有Chrome擴展程序,重新啓動了Chrome並且一切正常。我不知道我在創建此問題時使用了哪些Chrome擴展程序。我唯一知道的是,有一個擴展擴展並破壞了JavaScript代碼。這就是Chrome Inspector查看所有這些奇怪錯誤消息的原因。我不知道它的具體擴展名是什麼,但它必須是廣受歡迎的廣告攔截或彈出窗口阻止擴展之一。只需停用所有Chrome擴展程序,並確定您的代碼現在是否可以正常運行。

相關問題