Rails e ajax

Ciao a tutti, stavo giocando con ajax, un link mi fa uscire un popup che
mi chiede una password, se è corretta ridirigo al controller di
destinazione altrimenti visualizzo un msg di errore nella pagina che ha
mostrato il popup, fin quà tutto ok.
Ho un problema ora perchè voglio evitare di chiedere più volte la stessa
password. Se è già stata inserita corretta, voglio reindirizzare subito
solo che viene reindirizzata la richiesta ajax perchè il controllo lo
faccio in maniera asincrona ed il controller di destinazione viene
eseguito dentro al popup …come posso fare?
Credo che la questione riguardi più l’argomento della gestione delle
chiamate asincrone.

Grazie per un eventuale dritta

Direi che la richiesta deve ritornare un javascript che faccia la
redirezione.
Ci sono vari modi per farlo, uno è usare un rjs come view al posto
dell’rhtml (ops, html.erb!). Ad esempio

view.rjs:
page << ‘window.location = “/la/tua/url”’

Ciao
Paolo

Marco M. wrote:

Ciao a tutti, stavo giocando con ajax, un link mi fa uscire un popup che
mi chiede una password, se è corretta ridirigo al controller di
destinazione altrimenti visualizzo un msg di errore nella pagina che ha
mostrato il popup, fin quà tutto ok.
Ho un problema ora perchè voglio evitare di chiedere più volte la stessa
password. Se è già stata inserita corretta, voglio reindirizzare subito
solo che viene reindirizzata la richiesta ajax perchè il controllo lo
faccio in maniera asincrona ed il controller di destinazione viene
eseguito dentro al popup …come posso fare?
Credo che la questione riguardi più l’argomento della gestione delle
chiamate asincrone.

Grazie per un eventuale dritta

Sono riuscito ma tramite una redirect in javascript.

Nel controller:

        if session[:auth_topic]
          if session[:auth_topic] == @topic.password
            #redirect_to :controller => "home", :action => "show", 

:id => params[:id]
@redirect=url_for(:controller => “home”, :action =>
“show”, :id => params[:id])
end
end

e nella vista:

<% if @redirect -%>
<%= javascript_tag “window.location = ‘#{@redirect}’” %>
<% else -%>
ecc.

Paolo M. wrote:

Direi che la richiesta deve ritornare un javascript che faccia la
redirezione.
Ci sono vari modi per farlo, uno è usare un rjs come view al posto
dell’rhtml (ops, html.erb!). Ad esempio

view.rjs:
page << ‘window.location = “/la/tua/url”’

Ciao
Paolo

Grazie, speravo ci fosse un modo più veloce e più bello

Scusate, nell’esempio precedente, se volessi usare qualcosa del tipo:
session[:auth_topic][0]
session[:auth_topic][1]
ecc.

mi da questo errore:
You have a nil object when you didn’t expect it!

non si può indicizzare più di una volta?