Si vous utilisez une version plus récente de Rails, et je voulais le faire de façon plus discrète possible, vous devez utiliser les: options de respond_to dans votre contrôleur, comme ceci:
class MyController < ApplicationController
def first_method
respond_to do |format|
format.html # this handles normal requests asking for html
format.js # this handles requests asking for javascript to be sent instead
end
end
end
Si vous répondez à un clic, vous feriez quelque chose comme la cuisson de la requête comme si la page
$("a.element_you_click_to_trigger").click(function(e) {
e.preventDefault(); // make sure clicking doesn't trigger unneeded event bubbling
$.ajax({url: "/controller/first_method", type: "POST", dataType: "script"}); // send a request and tell the server that you want javascript back
}
Tout comme vous avez un fichier index.html.erb dans votre dossier pour que des vues contrôleur, vous auriez un similaire fichier first_method.js.erb
dans le dossier de vues correspondant le long du côté votre fichier index.html.erb
:
views
controller
index.html.erb
first_method.js.erb
Ceci renvoie le javascript qui est exécuté côté client, mais il obtient la construction côté serveur, de sorte que vous pouvez contenir des rails fragments ERB, de sorte que vous pouvez faire quelque chose comme ceci:
$('#loading_placeholder_element').html('<%= escape_javascript(render(:partial => "create")) %>');
// do some other stuff you fancy in the page
// then make the next call once the other stuff is over (you may need to add this as a call back on an animation):
$.ajax({url: "/controller/second_method", type: "POST", dataType: "script"});
Vous feriez alors répéter le même processus pour chacun des autres méthodes plus que FSMF mises en évidence.
J'ai trouvé ce Railscast on jQuery incroyablement utile quand j'apprenais cela il y a quelques mois, et je le recommande vraiment.
Espérons que cela aide!
Merci, c'est l'approche que j'ai suivie lorsque j'ai développé le site. Merci de valider mon idée :) –