Mit respond_to für Graceful Degradation mit Ajax in RoR 2.x
-
02-07-2019 - |
Frage
Ich wollte durch das AWDR Buch über Web-Entwicklung mit Ruby on Rails und eine der Fragen mit dem alten Code war es nicht respond_to sicher die Ansicht machen verwendet hat verwendete Javascript Ansicht wäre. Jetzt in einigen aktualisierten Beispiele habe ich Leute gesehen, erwähnen sie später, als Graceful Degradation Umsetzung request.xhr verwenden? Wenn der Benutzer zu sagen hat Javascript aktiviert, und wenn nicht sie leiten den Benutzer.
ich mich gefragt, ob Sie respond_to verwenden könnten das gleiche Verhalten und wenn ja, zu erhalten, wenn dies zum guten Ton oder nicht und warum?
Also, was ich denke zu tun, ist so etwas wie:
def function
respond_to do |format|
format.js do
basic_stuff
end
format.html do
basic_stuff
user_redirect
end
end
end
Es scheint sich sorta verletzen das DRY-Prinzip, und ich bin fehlt wahrscheinlich etwas darüber, wie der Benutzer und der Server interagieren hier. Um die API-Dokumentation ehrlich machte es mir nicht ganz klar.
Lösung
Nun können Sie wie folgt Refactoring:
def function
basic_stuff # executed regardless of the mime types accepted
respond_to do |format|
format.html do
user_redirect
end
end
# will fall back rendering the default view - which you should ensure will be js
end
request.xhr?
schaut auf dem X-Requested-With
Kopf Antrag (um zu sehen, ob es „XMLHttpRequest“ enthält). respond_to
schaut auf dem MIME-Typ akzeptiert.
Sie können entweder eine Art anmutiger degredation zu implementieren.
ABER Sie werden nicht in der Lage sein xhr?
für anmutige degredation zu verwenden, wenn Ihre Ajax-Aufrufe, dass die Header-Einstellung (Prototype tut dies automatisch).
Darüber hinaus respond_to
gibt mehr Flexibilität heißt das Senden xml, json, js, was auch immer es aus dem gleichen Block sein könnte.
Also würde ich empfehlen respond_to
hier.