2009-10-05 9 views
0

Dans mes Rails connecter fonctionnalité J'utiliseproblème request.request_uri lors de la transmission d'AJAX partielle - Rails

session[:return_to] = request.request_uri 

puis dans la fonctionnalité de journalisation j'utilise:

redirect_to session[:return_to] 

Ce qui fonctionne très bien, sauf quand je rends un partiel avec AJAX. Qu'est-ce qui se passe est que le request.uri est pour la demande AJAX qui visse et ne rend pas ce qui est attendu.

Vous savez comment je peux contourner cela?

Merci,

Tam

Répondre

0

Cela peut faire ce que vous voulez:

redirect_to :back 
+0

Cela ne fonctionne pas! il a effectivement gardé l'utilisateur à la page de connexion – Tam

0

request.request_uri sera en effet pour l'URI AJAX. La seule solution que j'ai trouvée est de faire vos demandes AJAX (ou du moins, celles qui peuvent provoquer une redirection vers la page de connexion) incluent l'URI de la page entière, par exemple.

form_remote_for ... do |f| 
    hidden_field_tag :this_page, request.request_uri 
    # only works if this view itself is not loaded over AJAX! 

ou pour une approche plus universelle:

form_remote_for :html => {:onsubmit => '$("this_page").value = window.location'}, ... do |f| 
    hidden_field_tag :this_page, request.request_uri 
    # non-JS clients just end up with the value given here 

Combine l'une de ces avec

# in the login action 
session[:return_to] = params[:this_page] 
Questions connexes