Rendre un partiel en rails en utilisant jquery

J’essaie de configurer une barre de navigation sur ma page d’accueil qui charge un partiel dans un élément div lorsque l’utilisateur clique sur les liens. J’ai suivi les étapes de ce post et les ai modifiées car je pensais avoir besoin de: Rails 3 – link_to pour appeler partial à l’aide de jquery ajax

Mon code:

vues / pages / home.html.erb:

 'load_upload_partial', :remote => true %> 

. . .

 

pages_controller:

 def load_upload_partial respond_to do | format | format.js {render :layout => false} end end 

/views/uploads/load_upload_partial.js.erb:

 $("#main_frame").html( " "/upload/upload_form" ) %>" ); 

Le partiel dans cet exemple est juste un formulaire. Lorsque je clique sur le lien, une page vierge s’affiche avec la barre d’adresse suivante: http: // localhost: 3000 / load_upload_partial? Remote = true

Cela me fait penser que le lien ne déclenche pas une demande ajax GET (si c’est la terminologie correcte). Si tel est le cas, dois-je append quelque chose à mon fichier application.js? J’ai suivi le railscast # 136 sur rails et jQuery, mais je n’ai pas pu déterminer quels éléments du code application.js s’appliquaient à mon cas. Toutes suggestions seraient très appréciées. Merci. À M

J’ai maintenant tendance à éviter d’utiliser RJS comme vous le souhaitez. Je préfère créer des modèles JS avec des outils comme le guidon.

J’utilise uniquement ajax pour obtenir des données brutes, puis je recrée le côté client partiel. C’est beaucoup mieux pour la charge du serveur et le transfert de données.

Je pense que vous devez changer votre link_to à:

 <%= link_to "Files", {:action => 'load_upload_partial' }, remote => true %> 

Le problème est lié à la signature de méthode de link_to.

rencontré le même problème – l’indice était dans le code HTML malformé produit – jetez un coup d’œil à la valeur de l’atsortingbut href de la balise produite par votre code. Je parie que ça a l’air génial. Voici le code correct:

  <%= link_to "Files", your_path, action: 'load_upload_partial', remote: true %> 

avez-vous essayé d’utiliser .load () au lieu de .html ()?

Aussi, essayez plutôt d’utiliser cette ligne:

 $("#main_frame").html( "<%= escape_javascript( render( :partial => '/upload/upload_form' ) %>" );