2017-05-21 5 views
9

Ich versuche, die folgende zu verwenden:Schienen redirect_to: zurück nicht funktioniert

class PaymentsController < ApplicationController 

    def addproduct 
    (session[:products] ||= []) << params[:item] 
    redirect_to :back 
    end 

end 

ich diese Ausnahme bekam:

undefined method `back_url' for #<PaymentsController:0x007ff682c467a8> 

Warum dies geschieht?

+0

Erhalten Sie 'ActionController :: RedirectBackError' in der Konsole? –

+0

In der Konsole bekomme ich die Ausnahme, die ich geschrieben habe. – Lechucico

+0

@Lechucico: Welche Version von Rails verwenden Sie? Ab Rails 5 ist es 'redirect_back' mit einer Fallback-Option. – Surya

Antwort

32

Schienen 5 hat redirect_back statt redirect_to :back. Es wurde geändert, da es eine Ausnahme ausgelöst hat, wenn die Anfrage HTTP_REFERER nicht vorhanden war.

So verwenden:

redirect_back fallback_location: root_path 

Sie root_path auf etwas anderes nach Ihren Wünschen ändern können.

+0

Aber das wird mich zu root_path umleiten? – Lechucico

+0

@Lechucico: Das ist der Punkt. Es wird nur dann zu root_path umgeleitet, wenn es keine Möglichkeit gibt, zurück zu dem Pfad umzuleiten, von dem die Anfrage stammt. – Surya

6

redirect_to :back wurde in Rails 5.0 (siehe PR) veraltet und wurde in Rails 5.1

Verwenden folgendes statt entfernt:

redirect_back(fallback_location: root_path) 
Verwandte Themen