5

Invio una richiesta javascript a un'azione del controller per provare a reindirizzare a un'altra pagina html se non sono soddisfatte determinate condizioni. Dopo aver guardato attraverso alcune domande, questo è quello che è venuta in mente:Reindirizza a html da javascript request not working (Rails)

def twittertweet 
    if current_user && current_user.twitter_token 
    .... 
    else 
    flash[:notice] = "You must be registered with Twitter to do that." 
    respond_to do |format| 
     format.js { render(:update) { |page| page.redirect_to authentications_url } } 
    end 
    end 
end 

voglio redirect_to l'authentications_url. Tuttavia, questo è ciò che accade:

Started POST "/twittertweet.json" for 127.0.0.1 at 2012-04-11 13:38:27 -0400 
    Processing by ItemsController#twittertweet as */* 
    Parameters: {"id"=>"22"} 
    Category Load (0.3ms) SELECT "categories".* FROM "categories" 
Rendered items/update.html.erb within layouts/application (0.0ms) 
Completed 200 OK in 112ms (Views: 79.9ms | ActiveRecord: 5.7ms) 

Come si può vedere, è solo nemmeno tentare di redirect_to l'authentications_url. Eppure so che la "altra" affermazione è stata raggiunta (ho messo le dichiarazioni put per aiutarmi a scoprirlo).

Eventuali soluzioni alternative per questo?

Aggiornamento Se si prova la soluzione di DanS, è presente un errore MissingTemplateError. Sta ancora cercando di reindirizzare gli elementi # aggiornamento:

ActionView::MissingTemplate (Missing template items/update, application/update with {:handlers=>[:erb, :builder, :coffee], :formats=>[:json], :locale=>[:en, :en]}. Searched in: 
    * "/Users/dylandrop/Documents/givespend/app/views" 
    * "/Users/dylandrop/.rvm/gems/ruby-1.9.2-p290/gems/devise-2.0.4/app/views" 
):  
+0

Avete bisogno del rendering (: aggiornamento)? 'format.js {redirect_to authentications_url}' – DanS

+0

@DanS Se faccio questo, dice "Avvia GET"/autenticazioni "per 127.0.0.1 a 2012-04-11 13:57:03 -0400 Elaborazione da AuthenticationsController # indice come */* "ecc ... ma in realtà non carica la pagina – varatis

+0

@DanS In altre parole dice che ha reso" authentications/index.html.erb "ma in realtà non fa nulla – varatis

risposta

12

Credo che si chiami twittertweet tramite la tecnologia AJAX. Quindi rispondete tramite il codice javasctipt:

format.js { render :js => "window.location.href = '#{some_path}'" } 
+0

Ah, grazie per questo – varatis

+0

grazie. questa risposta mi ha aiutato –