Existe-t-il un moyen de faire une redirection vers plus d'un site? Actuellement, je fais redirect_to @sale.url mais puis-je aussi redirect_to :back dans une nouvelle fenêtre en même temps?

Chaque solution est très appréciée (même les sales;))

Je vous remercie!

0
CottonEyeJoe 23 déc. 2015 à 13:24

3 réponses

Meilleure réponse

Vous ne pouvez rediriger que vers 1 URL à la fois, mais vous pouvez ajouter du javascript au fichier d'index pour ouvrir la 2ème fenêtre que vous voulez, et ici nous transmettons également l'URL du même contrôleur, vous pouvez changer les URL en ce que vous voulez, même URL locales:

# sales_controller.rb
def create
  .....
  @new_window_url = "http://google.com"
  redirect_to sales_path
end

# sales/index.html.erb
<javascript> 
  window.open("#{@new_window_url}");
</javascript> 
1
mohamed-ibrahim 23 déc. 2015 à 11:07

Rails (qui se trouve sur le serveur) ne peut pas rediriger le navigateur vers plus d'un emplacement: il fait une réponse et cette réponse ne peut être qu'une chose, pas deux choses différentes à la fois.

Cependant, le javascript sur la page peut ouvrir un emplacement dans un nouvel onglet, et les rails peuvent écrire du javascript qui sera exécuté au chargement de la page, ou avant de soumettre un formulaire, par exemple. Ainsi, vous pouvez, en soumettant un formulaire ou en cliquant sur un lien, ouvrir un emplacement dans un nouvel onglet, puis laisser les rails rediriger l'onglet actuel. Ce serait une chose étrange à faire et c'est le genre de chose normalement associée à d'horribles pop-ups publicitaires, comme lorsque vous utilisez un site peu torrent et qu'il ouvre des onglets de jeu / épouse chinoise chaque fois que vous faites quelque chose.

Donc, vous ne voulez probablement pas vraiment le faire. Si vous expliquez le contexte autour de ce que vous essayez de faire, quelqu'un pourra probablement suggérer une meilleure façon de résoudre le problème.

2
Max Williams 23 déc. 2015 à 10:55

Il n'est pas possible de rediriger vers des adresses différentes sur la même action dans une même condition.

Vous pouvez rediriger en fonction de différentes conditions.Si en fonction de la condition, vous obtiendrez plusieurs erreurs de redirection.

address = redirect_address1
if some_condition
 address = redirect_address2
end
redirect_to address
0
Sravan 23 déc. 2015 à 10:39