2012-04-27 1 views
1

Dans mon index.html.erb, j'ai un formulaire qui envoie via Ajax (je crois) avec :remote => trueRails: obtention des résultats de la requête Ajax à afficher dans la vue?

<%= form_tag locations_path, :method => :get, :remote=>true do %> 
    <p> 
    <%= text_field_tag :location, params[:location] %> 
    <%= submit_tag "Search Near", :name => nil %> 
    </p> 
<% end %> 

Dans l'action index, il est agencé de manière à mettre en place pour revenir @locations via JSON

def index 
    if params[:location].present? 
     @locations = Location.near(params[:location], 5 , :order => :distance) 

    else 
     @locations = Location.all 
    end 
    respond_to do |format| 
     format.html # new.html.erb 
     format.json { render json: @locations } 
    end 

    end 

À l'heure actuelle, il retourne juste (j'espère) @locations. Comment puis-je obtenir les résultats de @locations dans cette div dans le index.html.erb?

<div class="places"> </div> 

Répondre

1

je suggère une manière légèrement différente: en utilisant .js répondre. Ensuite, il devrait ressembler à ceci:

#def index 
#some code... 
respond_to do |format| 
    format.html 
    format.js 
end 


#index.js.erb 
$('.places').html("<%= escape_javascript(render :partial => "places_list") %>"); 


#_places_list.html.erb 
<%- @locations.each do |location| %> 
    <p><%= location.name %> </p> 
<%- end %> 

Le tutoriel sur ce sujet: http://net.tutsplus.com/tutorials/javascript-ajax/using-unobtrusive-javascript-and-ajax-with-rails-3/

0

vous pouvez lier à l'événement ajax:success sur l'élément de formulaire en javascript

voir ce post pour une longue explication: Rails 3 Remote Links and Forms par Steve Schwartz

vous pouvez également vouloir remplacer:

respond_to do |format| 
    format.html # new.html.erb 
    format.json { render json: @locations } 
end 

avec ce

respond_with @locations 

et l'ajouter au sommet de votre contrôleur:

respond_to :json 
+0

merci pour la référence à cette page. Malheureusement, je ne peux pas le faire fonctionner. Pouvez-vous voir quel est le problème avec la façon dont je déchire la variable @locations dans le json de mon contrôleur? En raison de la configuration de mon application, je ne peux pas copier le contrôleur de la page que vous m'avez montré ... – Leahcim

+0

J'ai ajouté une suggestion à mon commentaire sur votre réponse, êtes-vous capable de voir la demande ajax se passe dans le Firebug ou Web Inspector console? –

Questions connexes