Rails 3: How to "redirect_to" in Ajax call?

Misha Moroshko picture Misha Moroshko · Mar 28, 2011 · Viewed 59k times · Source

The following attempt_login method is called using Ajax after a login form is submitted.

class AccessController < ApplicationController
  [...]
  def attempt_login
    authorized_user = User.authenticate(params[:username], params[:password])

    if authorized_user
      session[:user_id] = authorized_user.id
      session[:username] = authorized_user.username
      flash[:notice] = "Hello #{authorized_user.name}."
      redirect_to(:controller => 'jobs', :action => 'index')
    else
      [...]
    end
  end
end

The problem is that redirect_to doesn't work.

How would you solve this ?

Answer

Misha Moroshko picture Misha Moroshko · Mar 29, 2011

Finally, I just replaced

redirect_to(:controller => 'jobs', :action => 'index')

with this:

render :js => "window.location = '/jobs/index'"

and it works fine!