2010-01-19 5 views
0

J'ai une mise en page web d'un pour qui ressemble à ceRails: Ajax: Changements Onload

<html> 
    <head> 
    </head> 

    <body> 
    <div id="posts"> 
     <div id="post1" class="post" > 
     <!--stuff 1--> 
     </div> 
     <div id="post2" class="post" > 
     <!--stuff 1--> 
     </div> 

     <!-- 96 more posts --> 

     <div id="post99" class="post" > 
     <!--stuff 1--> 
     </div> 
    </div>   

    </body> 
</html> 

Je voudrais pouvoir charger et rendre la page avec un blanc, puis une fonction appelé lorsque la page est chargée qui va et charger les messages et met à jour la page de façon dynamique.

Dans Rails, j'ai essayé d'utiliser "link_to_remote" pour mettre à jour avec tous les éléments. J'ai également ajusté le contrôleur posts pour rendre la collection de messages s'il s'agissait d'une requête ajax (request.xhr?). Cela a fonctionné très bien et très vite. Cependant, la mise à jour de la div vide est déclenchée en cliquant sur le lien. Je voudrais que la même action se produise lorsque la page est chargée pour que je n'aie pas besoin de mettre un lien.

Y a-t-il un assistant Rails Ajax ou une fonction RJS ou quelque chose dans Rails que je pourrais utiliser pour déclencher le chargement des "posts" après le chargement et le rendu de la page (sans les messages)?

(Si putsch vient à se renverser, je vais juste copier le code JS généré à partir de l'appel link_to_remote et le faire appeler depuis le gestionnaire onload sur le corps).

Répondre

5

Bien sûr, il y a, il est Rails, après tout :)

Quelque chose comme ça va faire:

<% javascript_tag do %> 
    $(document).ready(function() { 
    <%= remote_function(:update => "posts", :url => posts_partial_path) %> 
    }); 
<% end %> 

remote_function vous donnera le même javascript qui est exécuté lorsque vous utilisez des rails auxiliaires ajax.

+1

Merci. J'ai utilisé quelque chose comme ça, sauf que j'ai utilisé jQuery pour le faire discrètement. –

+2

comment utilisez-vous jquery pour le faire discrètement? Merci! – butterywombat

+0

@jay s'il vous plaît pouvez-vous répondre à la question de butterwombat – zzeroo

1

faire cela en utilisant jQuery comme si discrètement:

$(document).ready(function(){ 
    $.ajax({url: 'posts_partial_path', 
      success: function(data) { 
      $('#posts').html(data); 
      } 
    }); 
}); 

mettre ce code dans un fichier JavaScript inclus par votre page. Vous devez remplacer 'posts_partial_path' ci-dessus par la chaîne URL réelle, les helpers Rails ne sont pas disponibles dans le code JavaScript. Lisez à propos de la création d'appels AJAX avec jQuery ici: http://api.jquery.com/jQuery.ajax/. Fonctionne comme un champion.

Walter Gillett