Ich schreibe einen before_filter so antworten:wie auf einen Ajax-Aufruf in before_filter
def authenticate_user
if request.xhr?
flash.now[:alert] = 'Error'
render :partial => "js_helpers/popover", :formats => :js
else
authenticate_user!
end
end
Allerdings ist es nicht wie erwartet. Die Protokolldatei zeigt:
Rendered js_helpers/_popover.js.erb (0.1ms)
Filter chain halted as :authenticate_user rendered or redirected
Die Funktion des Js-Codes ist, einen Popover-Block anzuzeigen, der Flash-Nachricht zeigt. aber es sieht aus wie der Js-Code überhaupt nicht aufgeregt ist.
Also änderte ich meine Art und Weise:
def authenticate_user
if request.xhr?
flash.now[:alert] = 'Error'
render :js => "window.location = '/users/sign_up'"
else
authenticate_user!
end
end
Stattdessen möchte ich Seite um sich registrieren umleiten.
Es gibt jedoch immer noch Probleme. der Blitz scheint nicht funktioniert
Wie kann ich mein Ziel erreichen:
, wenn die Anforderung ein Ajax-Aufruf ist, führen Sie Javascript-Code kommen oder redirect_to eine neue Seite. Unter beiden Bedingungen muss ich eine Nachricht im Flash speichern.
Plus, der JavaScript-Code ist sehr lang, so dass ich es in eine Datei legen muss. Wie kann ich mit render: js ein Javascript in einer Datei ausführen?
Die Standardschienen umleitet auf einem AJAX-Aufruf nicht. – sockmonk