Rails 3 app nicht umleiten nach AJAX Formular submission
Ich habe eine Authlogic login-Formular mit :remote => true
dass nicht ein wenig inline-Validierung mit einem RJS-template, wenn der Benutzer/Kennwort ist nicht gültig. Dies funktioniert gut, aber wenn die Anmeldeinformationen sind gültig ist, es nicht ordnungsgemäß umgeleitet woanders.
Hier ist der controller reagiert auf die form Eingabe:
class UserSessionsController < ApplicationController
respond_to :html, :js
before_filter :require_no_user, :only => [:new, :create]
before_filter :require_user, :only => :destroy
def new
@user_session = UserSession.new
end
def create
@user_session = UserSession.new(params[:user_session])
respond_to do |format|
if @user_session.save
flash[:notice] = "Login successful!"
format.html { redirect_to account_url }
else
format.js
end
end
end
def destroy
current_user_session.destroy
flash[:notice] = "Logout successful!"
redirect_to root_path
end
end
Den format.js
Teil funktioniert, aber wenn die Benutzer/Passwort sind gut (format.html
), passiert nichts. Allerdings, wenn ich sehe eine Entwicklung.log, es ist Beantragung der account_url Seite. Es ist einfach nicht umleiten, die Sie in den browser. Ich denke, es ist die Rückkehr der account-Seite über AJAX und ich wollt eigentlich nur ein normaler redirect.
Den HTML-Code für das Formular ist dieser:
<%= simple_form_for(
:user_session, @user_session,
:url => { :controller => 'user_sessions', :action => "create" },
:html => { :id => 'login-dropdown' }, :remote => true) do |f| %>
Du musst angemeldet sein, um einen Kommentar abzugeben.
Habe ich einen Weg gefunden um es zu beheben. Pro http://www.ruby-forum.com/topic/168406#945053, ich habe Folgendes in meine Bewerbung controller:
Dies verhindert, dass die redirect-Antwort zugestellt wird per xhr. Wenn es eine "richtige" Art und Weise, dies zu tun, in der controller, ich würde so gerne hören, obwohl.
render :js => "window.location = ...
im Controller, aber es gibt mirActionView::MissingTemplate (Missing template controller/update, application/update with {:handlers=>...
jrails
ein bisschen veraltet, schadeKönnen Sie tun, wie unten :
in allpication.js
- und controller-Methode hat folgenden code:
Aber ich denke, es ist besser, Weg zu tun....
in der create-Aktion fügen Sie diesen code
Ende
in Ihrem "erstellen.js.erb"