Mesmo parcial em vários pontos de vista retornando para o que ver ele foi chamado de
-
19-08-2019 - |
Pergunta
Atualmente estou re-usando um parcial sobre dois pontos de vista diferentes.
Ver A
View B
O parcial pertence ao modelo A, mas tem uma associação com o Modelo B, de modo que é aplicável ao Modelo B bem.
Ele contém um formulário e quando os dados são apresentados, sempre redireciona o usuário para exibição A. No entanto, quando eu enviar o formulário a partir View B, eu gostaria de ser redirecionado de volta para View B em vez de formulário A.
A razão ele redireciona agora para ver uma é porque esse é o modelo esta forma pertence. Então, quando publicado, ele fala para o controlador A e usa um redirecionamento levar o usuário a a_url.
Como posso saber a minha forma (ou mais para que a ação do controlador) para redirecionar o usuário para voltar de onde vieram?
Obrigado!
Solução
resolvido.
Eu adicionei um campo oculto para a minha forma que continha o nome do controlador de onde o parcial foi proferida e, em seguida, meu bloco respond_to determinada para onde enviar o usuário.
Ver código:
<%= hidden_field_tag 'submitted_from', "#{controller.controller_name}" %>
Meu código controlador:
if params[:submitted_from] == 'A'
redirect_to a_url
else
redirect_to b_url
end
Outras dicas
Em vez de usar uma tag escondida, você pode querer colocar isso na sessão:
session[:submitted_from] = new_model_url
e, na outra ação ..
redirect_to(session[:submitted_from])
session[:submitted_from] = nil
É muito fácil mudar a variáveis ??do formulário, enquanto pode ser mais difícil (mas não impossível) para forjar uma sessão. Eu ir por esse caminho se fosse a minha candidatura.