2011-03-23 38 views
1

我在Rails應用中實現了jQuery UI標籤,並且出現錯誤: 當我提交ajax表單或鏈接時,它會被提交多次。 可以看出在此末日控制檯輸出:

DELETE http://localhost:3000/innmeldings/101 404(未找到)
DELETE http://localhost:3000/innmeldings/101 404(未找到)

的次數越多i開關中間人的選項卡,次數越多AJAX 鏈路的提交。我GOOGLE了它,但沒有找到任何東西,這使得我認爲這不是在JQuery UI選項卡中的常見錯誤 。 任何想法我做錯了什麼?

Ajax post/gets(表單/鏈接)在jQuery UI標籤中多次提交

我使用導軌3.05。我試過不同版本的jQuery OG jQuery用戶界面的:

class InnmeldingsController < ApplicationController 
    respond_to :js, :html 

    def destroy 
    @innmelding = Innmelding.find(params[:id]) 
    @innmelding.destroy 
    @innmeldings = Innmelding.all 
    respond_with(@innmeldings, :layout => !request.xhr?) 
    end 

    def list 
    @innmeldings = Innmelding.all 
    respond_to do |format| 
     format.html # index.html.erb 
     format.xml { render :xml => @innmeldings } 
     format.js 
    end 
    end 

list.html.erb:

<td><%= link_to 'Destroy', innmelding, :remote => true, :id => "reload", :method => :delete %></td> 

的application.js:

$(document).ready(function(){ 
    $("#nav").tabs(); 
}); 

回答

2

找到解決方案(感謝威廉讓我走上賽道)。默認情況下,Rails通過ajax調用加載js文件。解決方案:從其他需要的控制器中隱藏application.html.erb中的js文件。

在我的控制器簡單:

def index 
    @vis_js = 1 
    end 

和application.html.erb:

<% if defined?(@vis_js)%> 
    <%= javascript_include_tag 'event_calendar', :cache => true %> 
    <%= javascript_include_tag "http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js", "http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.1/jquery-ui.min.js", "jquery.validate.js", "jquery.ui.datepicker-no", :cache => true %> 
    <%= javascript_include_tag 'rails', :cache => true %> 
    <%= javascript_include_tag 'application', :cache => true %> 
    <% end %> 
2

您應該檢查你」不要多次綁定事件(例如點擊)。當您通過AJAX加載標籤內容而不緩存內容(即使用選項cache: false,這是默認值)時,會多次加載相同的JavaScript文件。

+0

謝謝!設置緩存:真正解決它! – 2011-03-24 08:22:22

+0

也許你可以接受這個答案? – 2011-03-24 11:56:24

+0

只有部分解決:當我有一個頁面加載到標籤中的Ajax,點擊功能提交到兩次標籤後的時間。最終,它看起來像JavaScript文件緩存爲每個選項卡,但再次加載時,我打了另一個tab.js ajax調用。有沒有辦法阻止再次加載JavaScript文件?其他方案? – 2011-03-28 09:25:18