2010-09-05 6 views
0

Je suis sur un form_remote_tag pour tenter une soumission de formulaire ajax, comme ceci:demande ajax avec form_remote_tag ne fonctionne pas

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

Il rend sans problème apparent:

<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;"> 

Le action test_action:

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

Quand je soumets le formulaire (via le bouton d'envoi, rien bizarre comme le jquery submit() e évent), aucune requête ajax n'est faite. La vérification xhr renvoie false. Aidez-moi, s'il vous plaît??

Répondre

0

Dans le contrôleur, vous devez répondre au format spécifié, js dans votre cas. Par exemple:

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 

La meilleure pratique pour est maintenant d'utiliser unobtrusive javascript (UJS). Il n'y a pas form_remote_tag dans les rails 3. UJS peut être utilisé with rails 2.3 as well.

+0

ne devrait pas demander.xhr? au moins retourner vrai si? cette action était juste quelque chose que j'utilisais pour tester si la requête ajax était envoyée. – herpderp