Wenn Sie eine neuere Version von Rails verwenden, und wollte dies auf eine unaufdringliche Art und Weise wie möglich tun, dann würden Sie die verwenden: respond_to Optionen in Ihrem Controller, etwa so:
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
Wenn Sie mit einem Klick sind reagieren, würden Sie so etwas wie Brennen die Abfrage wie so auf der Seite
$("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
}
Genau das tun, wie Sie eine index.html.erb Datei in Ihren Ansichten haben einen Ordner für die Controller, Sie hätten eine ähnliche first_method.js.erb
Datei in den entsprechenden Ansichten Ordner an der Seite Ihre index.html.erb
Datei:
views
controller
index.html.erb
first_method.js.erb
Dies wird Javascript zurück, die Client-Seite ausgeführt wird, aber es wird Server-Seite bauen, so dass Sie Schienen ERB-Fragmente enthalten, so dass Sie tun können, so etwas wie dieses:
$('#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"});
Sie würden dann den gleichen Vorgang wiederholen Sie für jeden der anderen mehr Methoden, die hervorgehoben fsmf.
Ich fand diese Railscast on jQuery unglaublich hilfreich, als ich das vor ein paar Monaten lernte, und ich würde es wirklich empfehlen.
Hoffe, das hilft!
Danke, das ist der Ansatz, den ich bei der Entwicklung der Seite gemacht habe. Danke für die Bestätigung meiner Idee :) –