11
votes

Comment utiliser le lien_to assistant pour ouvrir une popup?

Je veux juste utiliser link_to pour ouvrir une popup. J'ai essayé quelque chose mais cela ne fonctionne pas: xxx

aucune idée?

Merci!


1 commentaires

Le code que vous avez posté aurait travaillé dans des rails 2, mais on dirait que cette fonctionnalité a été supprimée dans les rails 3.


5 Réponses :


6
votes

Mon premier coup de poignard à ce problème ressemblerait probablement à ceci. Il suppose que vous utilisez des rails 3, JQuery et JQuery-Rails. Si vous n'êtes pas, cette approche ne fonctionnera certainement pas. Ce code exact n'est pas testé, votre kilométrage peut varier. J'essaie juste de vous donner une idée de la façon dont vous voudrez peut-être penser au problème. Si vous souhaitez que je puisse élaborer comment cela fonctionne, faites-le me faire savoir et je ferai de mon mieux pour expliquer.

Tournez votre lien_to dans un post Ajax: p> xxx pré>

dans votre contrôleur, répondez avec un modèle JavaScript: p>

window.open (<%= company_url(@company) %>, "mywindow","width=600,height=600");


3 commentaires

Oui mais il avait l'habitude de travailler en générant la fenêtre onclick = "window.open (this.href, 'create_company', 'hauteur = 600, largeur = 600'); renvoyer false;"


Comment se fait-il que le nouveau pilote UJS Jrails a cessé de soutenir cela. Bien que popup ne soit pas une option dans les documents, toujours apidock.com/rails/actionvie/helpers / Urlhelper / link_to


Cela n'y a-t-il pas plus compliqué que la réponse de Viktor Tron? Il s'agit de créer une action de contrôleur supplémentaire, de créer une vue supplémentaire et nécessite que le navigateur de l'utilisateur apporte une demande supplémentaire au serveur afin qu'elle soit sensiblement plus lente. Quel est l'avantage général ou le processus de pensée derrière cette conception?



11
votes
<%= link_to 'Create a new company',
         new_company_path, 
        :onclick=>"window.open(this.href,'create_company', 'height=600, width=600');return false;" 
%>

3 commentaires

N'est-il pas préférable d'ajouter la classe popup et d'ajouter un comportement contextuel à tous les liens ayant cette classe au lieu de laide en ligne JS? Vous pouvez stocker le titre et d'autres éléments dans Data-Quelque chose attributs.


Je ne pense pas que ce soit laid. Il met tout le code pour ouvrir une popup au même endroit, il est donc moins susceptible de casser à l'avenir. Vous n'êtes pas obligé de vous rappeler d'ajouter de JQuery à chaque page pour faire ce travail et vous n'avez pas les frais généraux nécessaires pour exécuter ce code JQuery.


Vous avez les deux raison. Numéro de vision du monde :) - Les puristes JS non obstrissants iront via JS Crochet sur la classe CSS.



19
votes

Ajoutez ceci à votre application.js.

= link_to( 'Create a new company', new_company_path, 'data-popup' => true )


2 commentaires

De loin le plus élégant - ESP si vous ajoutez quelque chose comme des options de données = 'hauteur = 600, largeur = 600'


Comme les versions de JQuery actuelles déposent live , je préférerais $ ("corps"). On ("Cliquez sur" A "A Data-Popup] ', ...



1
votes

Ceci est la solution rapide et sale xxx


0 commentaires

2
votes

Si votre objectif est juste d'ouvrir le lien dans une nouvelle fenêtre et que vous ne vous souciez pas de la gestion des dimensions / la barre d'outils / etc., vous pouvez également utiliser un bon ancien HTML:

<%= link_to 'Create a new company', new_company_path, :target => '_blank' %>


0 commentaires