2010-09-05 299 views
0

所以我使用的是form_remote_tag嘗試一個ajax表單提交,就像這樣:AJAX請求不起作用

<% form_remote_tag :update=> 'test', :url=> {:action=>'test_action'} do -%> 

它使得沒有明顯的問題:

<form action="/pages/test_action" method="post" onsubmit="new Ajax.Updater('test', '/pages/test_action', {asynchronous:true, evalScripts:true, parameters:Form.serialize(this)}); return false;"> 

的test_action action:

def test_action 
    if request.xhr? 
    render :text => 'some text' 
    else 
    puts 'nope' 
    end 
end 

當我提交表單(通過提交按鈕,沒有什麼奇怪的像jquery submit()e沒有ajax請求。 xhr檢查返回false。請幫助??

回答

0

在控制器中,您應該對指定的格式js進行響應。例如:

def create 
    @item = Item.new(params[:item]) 

    respond_to do |format| 
    if @item.save 
     flash[:notice] = 'Item was successfully created.' 
     format.js 
     format.html { redirect_to(@item) } 
     format.xml { render :xml => @item, :status => :created, :location => @item } 
    else 
     format.html { render :action => "new" } 
     format.xml { render :xml => @item.errors, :status => :unprocessable_entity } 
    end 
    end 
end 

最好的做法現在是使用unobtrusive javascript(UJS)。在導軌3中沒有form_remote_tag。UJS可以使用with rails 2.3 as well

+0

不應該request.xhr?至少返回true?那個動作就是我用來測試ajax請求是否被髮送的東西。 – herpderp 2010-09-05 20:46:52