2017-05-21 50 views
9

Próbuję użyć następujących:szyny redirect_to: wstecz nie działa

class PaymentsController < ApplicationController 

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

end 

mam ten wyjątek:

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

Dlaczego tak się dzieje?

+0

Czy otrzymujesz w konsoli polecenie 'ActionController :: RedirectBackError'? –

+0

W konsoli mam wyjątek, który napisałem. – Lechucico

+0

@Lechucico: Którą wersję Rails używasz? Z Rails 5 jest to 'redirect_back' z opcją zastępczą. – Surya

Odpowiedz

32

szyn 5 ma redirect_back zamiast redirect_to :back. Został on zmieniony, ponieważ był używany do zgłaszania wyjątku, gdy nie było zgłoszenia żądania HTTP_REFERER.

Więc użyj tego:

redirect_back fallback_location: root_path 

można zmienić root_path do czegoś innego, jak na swoje wymagania.

+0

Ale to przekieruje mnie do root_path? – Lechucico

+0

@Lechucico: Właśnie o to chodzi. Przekieruje to na ścieżkę root_path, tylko wtedy, gdy nie ma możliwości przekierowania z powrotem do ścieżki, z której pochodzi żądanie. – Surya

6

redirect_to :back się przestarzałe w szynach 5,0 (patrz PR) i usunięto szyn 5,1

użyć następujących zamiast:

redirect_back(fallback_location: root_path)