In meiner Aktion möchte ich nur dann mit der Verarbeitung antworten, wenn sie von einer AJAX-Anfrage aufgerufen wurde. Wie überprüfe ich?
Ich möchte so etwas machen:
def action
@model = Model.find(params[:id])
respond_to do |format|
if (wasAJAXRequest()) #How do I do this?
format.html #action.html.erb
else
format.html {redirect_to root_url}
end
end
ruby-on-rails
ajax
Rasiermessersturm
quelle
quelle
remote: true
in neueren Rails-Versionen, da die erforderlichen Header nicht festgelegt werden.Wenn Sie
:remote => true
in Ihren Links oder Formularen verwenden, tun Sie Folgendes:Sie können auch vor dem respond_to Block überprüfen durch den Aufruf
request.xhr?
.quelle
$.ajax({dataType: 'html'})
ist ein Ajax, der mit HTML antwortet. Der richtige Weg, dies zu tun, ist der zweite, den Sie erwähnt habenrequest.xhr?
Die Dokumente sagen, dass request.xhr?
Aber Vorsicht
Gibt numerische oder Nullwerte zurück, keine BOOLEAN-Werte, wie in den Dokumenten angegeben, gemäß = ~.
Es basiert darauf:
so
Die Dokumente:
http://apidock.com/rails/v4.2.1/ActionDispatch/Request/xml_http_request%3F
quelle
nil
, ist das Ergebnis falsch.Ich benutze gerne
before_action
Filter. Sie sind besonders nützlich, wenn Sie denselben Filter / dieselbe Berechtigung für mehrere Aktionen benötigen.quelle
Wenn diese 0 zurückgibt, bedeutet dies, dass es sich um eine Ajax-Anforderung handelt, andernfalls wird null zurückgegeben
quelle