2009-10-13 9 views

Répondre

6

Pas vraiment de l'action du contrôleur.

Une redirection est une réponse HTTP avec un code d'état 301/302 et un corps vide dans Rails. Comme le corps est vide, vous n'avez aucun moyen d'inclure un traitement supplémentaire pour le navigateur (tel que javascript etc pour ouvrir une nouvelle fenêtre).

En supposant que l'action du contrôleur soit déclenchée via un lien hypertexte sur une autre page, le mieux serait de l'ouvrir dans une nouvelle fenêtre. Ensuite, la cible de redirection serait affichée.

Soit que, ou rendre la même page en réponse régulière (sans redirection) et insérez javascript quand la page se charge d'ouvrir une nouvelle fenêtre

1

Cherché un peu et trouvé une solution ... il est pas sur le contrôleur (comme je le voulais à l'origine aussi, mais il est assez facile ...) à votre avis:

<%= link_to '', {:controller => 'assignments', :action => 'overall_report_gen', :evaluator_relations => @evaluator_relations}, :target => '_blank', :id => 'reporte' %> 

<script language="JavaScript"> 
    document.getElementById('reporte').click(); 
</SCRIPT> 

donc, avec '' comme la chaîne d'affichage dans le link_to, vous obtenez un lien invisible,

avec le :target => '_blank' le lien, lorsque cliqué ouvrira dans une nouvelle fenêtre

et le :id => 'reporte' est nécessaire afin de cliquer sur le lien avec javascript.

donc il suffit de placer le même identifiant dans le link_to et dans la chaîne dans le javascript, et le tour est

il faut penser à l'extrait de code JavaScript APRÈS le link_to afin d'attendre l'élément est chargé

3

@ madlep "votre meilleur pari serait d'avoir cela ouvert dans une nouvelle fenêtre"

Merci pour celui-là. Fonctionne parfaitement!

Vue:

<%= link_to "Buy this product", buy_path, target: "_blank" %> 
contrôleur

:

def buy 
    ... 
    redirect_to link 
end 
Questions connexes