我有點困惑。在很多關於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中工作?
你的佈局中是否有'<%= javscript_include_tag「應用程序」%>「? – 2012-01-03 03:12:25
是的。在源代碼中,這裏還有兩個帶有_jquery.js_和_jquery-ujs.js_的
jquery.js和jquery_ujs.js由資產管道和jquery-rails gem動態地提供。它們不再存在於Rails 3.1應用程序的磁盤上。
通過請求
/assets/jquery.js
和/assets/jquery_ujs.js
與您的瀏覽器,您可以驗證它們是否正確地被服務。確保他們返回JavaScript而不是404/500錯誤。來源
2012-01-03 05:25:48 meagar
這回答了我可以在您的相當長且冗長的帖子中找到的唯一問題。我們不可能告訴你爲什麼你的銷燬鏈接不起作用,因爲你實際上沒有說什麼比「他們不工作」更多。點擊它們會發生什麼?你有任何的JavaScript錯誤?你有任何服務器端錯誤?你的日誌說什麼?在我們開始幫助您之前,您需要執行大量的調試步驟。 – meagar 2012-01-03 05:27:42
謝謝。我得到了那條路徑的文件。知道是一個問題,爲什麼銷燬鏈接不起作用。我沒有進一步解釋它,因爲在這裏stackoverflow已經有很多這些問題。我會編輯我的問題。 – Marc 2012-01-03 05:40:41
正確當然它不在rails應用程序內。但它確實存在於磁盤上。它位於vendor/assets/javascripts中的jquery-rails gem中。這可能有助於瞭解何時需要跟蹤僅指向jquery代碼的錯誤消息。 – 2012-09-05 20:46:26
看起來像一個JavaScript錯誤...您可以:
此外,請確保你沒有包括jquery.js和jquery-ujs.js兩次(就像你在做什麼)。你曾經提到你有jquery.js和jquery-ujs.js腳本標記...不這樣做。
相反,你的應用程序/資產/ Java腳本/ application.js中應該是這樣的:
這將增加了jQuery的jquery_ujs,並在您的應用程序/資產/ JavaScript的文件夾中所有的JavaScript。
來源
2012-01-04 10:40:28
準確地說,這是在我的應用程序/資產/ javascripts/application.js中,僅此而已。你可以從[github](https://github.com/lunij/wpr)獲取它。除了內置的jquery以外,沒有任何JavaScript代碼。我認爲這是Chrome和JQuery之間的問題。但是請自己嘗試一下。 – Marc 2012-01-04 11:11:45
@lunij下載代碼和調試是我向人們收費的...如果您將代碼放在heroku上,並給出一個鏈接,我可以在不花費大量時間的情況下看到javascript,我會這樣做。 – 2012-01-04 14:38:09
是的,你說得對。我會把它放在heroku上。對不起! – Marc 2012-01-04 16:45:14
幾周前,我剛剛停用了所有Chrome擴展程序,重新啓動了Chrome並且一切正常。我不知道我在創建此問題時使用了哪些Chrome擴展程序。我唯一知道的是,有一個擴展擴展並破壞了JavaScript代碼。這就是Chrome Inspector查看所有這些奇怪錯誤消息的原因。我不知道它的具體擴展名是什麼,但它必須是廣受歡迎的廣告攔截或彈出窗口阻止擴展之一。只需停用所有Chrome擴展程序,並確定您的代碼現在是否可以正常運行。
來源
2012-10-24 22:32:52 Marc