2010-09-22 67 views
4

我正在通過railsstutorial.org上的rails 3教程。我剛剛創建了一個非常簡單的腳手架用戶。Rails 3:method =>:刪除在Internet Explorer中不起作用

腳手架生成的銷燬鏈接在Internet Explorer中不起作用。它重定向到show動作而不是刪除用戶。

這個問題只發生在IE9和IE8(我迄今爲止測試過的唯一IE版本)這個問題不會發生在Firefox中。誰能告訴我爲什麼會發生這種情況?

的觀點:

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

生成的HTML:

<a href="https://stackoverflow.com/users/1" data-confirm="Are you sure?" data-method="delete" rel="nofollow">Destroy</a> 

控制器:

def destroy 
    @user = User.find(params[:id]) 
    @user.destroy 

    respond_to do |format| 
     format.html { redirect_to(users_url) } 
     format.xml { head :ok } 
    end 
end 
+1

我有同樣的問題 - 也是對Chrome和Firefox。 – theschmitzer 2010-09-22 21:13:12

+0

我也有這個問題,但只使用IE9。 IE8適用於我,如果我使用短主機名(我在此處以開發模式運行),則IE9會給我提供與您相同的症狀,但是如果使用開發服務器的FQDN,對象將被刪除,並且開發日誌會顯示重定向到索引,但是接下來是獲取現在刪除的對象的請求。 – hmallett 2011-07-25 13:39:03

回答

2

請確保您有<%= javascript_include_tag:默認%>

JS現在在rails 3中並不顯眼,所以include需要讓它工作。

+0

我在我的默認應用程序佈局中有這條線,問題仍然存在 – louis11 2010-09-23 14:26:22

0

無論Web瀏覽器如何,我都會遇到同樣的問題。

theschmitzer的回答沒有幫助我。

我發現,只要我使用jquery javascript庫,控制器中的destroy方法永遠不會被調用。

在我的情況下,我很難找出這樣一個新手的JavaScript庫(jQuery和Prototype)之間的衝突。我完全改變爲jQuery - 如在本次電視廣播的末尾:http://railscasts.com/episodes/205-unobtrusive-javascript

0

我有same problem。我使用的是<%= javascript_include_tag :defaults %>以及jQuery庫。當我刪除jQuery庫時,一切正常。此外,您可以使用noConflict()

1

默認情況下,使用Prototype JavaScript庫創建新的rails項目,並在「public/javascript/rails.js」中創建一些特定於原型的幫助函數。腳手架依靠這些助手中的一些來處理一些事情,比如銷燬記錄,因爲沒有一個不需要JavaScript的方式來製作DELETE請求等。

確保您的頁面同時加載JavaScript庫和「rails.js」文件,這些文件是搭建腳手架所必需的(請參閱schmitzer的答案,或登入Firebug)。

二,如果你使用的是jQuery,install the 'jquery-rails' gem然後運行「rails g jquery:install」。這將刪除Prototype庫,安裝jQuery庫,並更新助手以使用jQuery。

+1

我有這個問題,但在任何瀏覽器和使用jQuery與原型一起是罪魁禍首。此解決方案工作。 – Jorge 2011-05-05 03:59:23

+0

我沒有任何其他庫,不知道爲什麼我得到這個錯誤。但我遵循這一個,它的工作!謝謝@ user421944 – gouravtiwari21 2011-11-03 17:21:47

+0

關於「rails g jquery:install」的錯誤:找不到生成器'jquery:install' – 2016-08-02 20:52:15

2

您需要將您的原型分發版本升級到1.7而不是1.7rc2(它沒有完全支持IE 9)。最新的Rails gem(在寫作的時候(在寶石回購中捆綁了1.7rc2)轉到原型主頁,下載新的1.7版本,並用捆綁的prototype.js替換掉。

1

嘗試替換您的javascript默認包含有:。

<%= javascript_include_tag "jquery" %> 
<%= javascript_include_tag "jquery.min" %> 
<%= javascript_include_tag "rails" %> 

繼上述步驟,以獲得最新的jquery.js,jquery.min.js和rails.js爲我工作,反正

或者更換的意義:默認在application.rb中:

config.action_view.javascript_expansions[:defaults] = %w(jquery jquery.min rails) 

然後你的應用程序佈局仍然可以看有沒有

<%= javascript_include_tag :defaults %> 
+0

在Linux和Rails 3上有同樣的問題。已經嘗試了一整天讓它工作,唯一有效的工作是分離標籤如上。怪異的行爲。再次刪除作品,實時搜索作品,整理作品。在Firefox和鉻和Safari瀏覽器在Linux和Mac上工作,在Windows上chrome.firefox工作還沒有試過IE瀏覽器。謝謝@亞當Ehven – IanN 2011-07-30 11:41:11

+0

忘了提及我從來沒有編輯config/application.rb,它的工作原理。也許不是最優美的方式或最好的幹,但在這一點上我不在乎 – IanN 2011-07-30 11:42:48

2

我無法得到它與IE9的工作與默認的JavaScript庫,所以我安裝jquery-rails和它工作得很好。也許不是理想的解決方案,但如果它的工作...

8

在與資產管道的Rails 3.1中,所有的JavaScript都在application.js中。所以,而不是:默認值,你需要「應用程序」。

<%= javascript_include_tag "application" %> 
+0

升級和比較我的佈局默認的一個「應用程序」丟失後。這對我有用。 – ayckoster 2011-12-16 17:08:42

+0

是的,這是有效的。我們不能相信我們必須從3.0更改爲3.1。 – manojlds 2012-01-10 17:49:58

+0

有人可以解釋爲什麼這解決了這個問題嗎?是使用JavaScript的軌道改變一些有關的HTML? – 2012-07-12 02:14:54

1

這可能是因爲您的腳本(rails.js和/或application.js)的加載發生在頭部。在腳本執行時,DOM中沒有元素,其屬性爲data-confirmdata-method

所以,解決方案是將javascript標記移動到<body>的末尾。目前,DOM最有可能被加載,JavaScript會找到你的元素。

0

我注意到,在rails 4中,link_to將:method作爲html屬性「data-method」,但是:確認轉到屬性「confirm」,其中javascript需要它爲「data-confirm」。

不知道這是在軌道中的錯誤,但你可以解決它通過這樣做:

<%= link_to 'Destroy', user, :data => {:confirm => 'Are you sure?'}, :method => :delete %> 
相關問題