Estou tendo um problema com redirect_to :back
. Sim, são referenciadores.
Costumo obter a exceção
(ActionController :: RedirectBackError) "Nenhum HTTP_REFERER foi definido na solicitação para esta ação, então redirect_to: back não pôde ser chamado com sucesso. Se este for um teste, certifique-se de especificar request.env [\" HTTP_REFERER \ "]."
Percebo que isso é resultado da indisponibilidade de um referenciador. Existe uma maneira de, por exemplo, definir uma variável de sessão em cada acesso com a última página visitada e, quando HTTP_REFERER não estiver disponível, utilizar esta variável de sessão para redirecionar?
ruby-on-rails
ruby
http
user67050
fonte
fonte
Respostas:
É improvável que você faz tem uma sessão e não tem um referencial.
A situação em que um referenciador não é definido não é tão incomum e eu geralmente resgato essa expectativa:
Se você fizer isso com frequência (o que eu acho uma má ideia), pode envolvê-lo em outro método, como sugere Maran.
BTW, acho que é uma má ideia porque torna o fluxo de usuário ambíguo. Somente no caso de um login isso é sensato.
ATUALIZAÇÃO : Como várias pessoas apontaram, isso não funciona mais com o Rails 5. Em vez disso, use
redirect_back
, este método também suporta um fallback. O código então se torna:fonte
rescue_from
se o controlador tivesse váriosredirect_to :back
redirect_to (request.referrer || root_url)
Aqui está meu pequeno método redirect_to_back:
Você pode passar um url opcional para ir para outro lugar se http_refferrer estiver em branco.
fonte
Tente isso! (Graças ao plugin Authlogic )
fonte
Recurso central
redirect_back
é um recurso central do Rails 5+, está disponível noActionController::Redirecting
módulo que já está incluído noApplicationController::Base
.EDIT: fonte
fonte
redirect_to :back
.Talvez seja tarde, mas gostaria de compartilhar meu método que também preserva as opções:
Você pode usá-lo como:
fonte
atualizado: Rails 5 adicionou o método redirect_back ( https://github.com/rails/rails/pull/22506/ ), melhor apenas usar:
Para trilhos inferiores a 5.0 ainda pode usar a forma antiga abaixo:
semelhante à resposta de @ troex, adicione isso ao seu controlador de aplicativo
em seguida, use-o em seu controlador
fonte
Recentemente, encontrei o mesmo problema em que tive que redirecionar
:back
ou para uma página específica. Depois de buscar muitas soluções, finalmente descobri que é simples e parece resolver o problema:Se você quiser usar
session
detalhes, faça-o na outra parte do código.fonte