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.

War es hilfreich?

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top