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!

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top