2009-08-22 10 views
0

J'ai appelé le fichier partiel de la boucle. Maintenant, quand je me mets à jour, je ne reçois pas de résultat actualisé, mais je dois actualiser pour obtenir le résultat mis à jour. le code est comme ceci:ne pas obtenir de nouvelles données mises à jour tout en utilisant AJAX dans l'appel de fichier partiel

les fichier1

@folders.each do |@folder| 
    = render :partial => 'folders/group_list' 

le fichier partiel

%div{:id => "group_list_#{@folder.id}"} // this is the div which needs to be updated 
    = group_member(@folder) //this is the helper method 

J'ai besoin du @folder mis à jour à partir du contrôleur mais je reçois toujours fichier1 de @folder

côté du contrôleur

def any_method 
    .. 
    some code 
    .. 
    @folder = Folder.find(params[:folder_id]) 
    render :partial => '/folders/group_list' 
end 
+0

Pouvez-vous poster le code qui fait l'appel Ajax, et un échantillon des journaux montrant ce qui se passe au cours de cet appel? – jdl

+0

Et si vous utilisez RJS, postez ce code aussi. – jdl

Répondre

0

Avez-vous déjà eu beaucoup d'expérience avec Rails? Si j'interprète correctement votre message, vous semblez aller mal dans les choses.

Il semble que vous utilisiez haml pour moi. Dans ce cas, vos fichiers doivent ressembler à ceci:

fichier1:

= render :partial => 'folders/group_list', :collection => @folders 

Cela rend les dossiers partiels/group_list une fois pour chaque élément @folders.

fichier partiel:

%div{ :id => "group_list_#{group_list.id}" 
    = group_member(folder) 

Par défaut, la variable accessible dans la partie est nommé d'après la même partielle. Donc, vous obtenez l'ID de group_list, pas de dossier. Vous pouvez modifier ce comportement en transmettant l'argument: as à render().

contrôleur :

def ajax_method 
    @folder = Folder.find(params[:folder_id]) 
    render :update do |page| 
     page.replace "group_list_#{@folder.id}", :partial => 'folders/group_list', :object => @folder 
    end 
end