2011-10-21 10 views
8

Sono nel controller delle applicazioni e ho una stringa di url. Come faccio a dire all'app di aprire l'url nel browser in una nuova finestra. C'è un modo per impostare l'obiettivo a vuoto?Ruby/Rails: apre un URL dal controller in una nuova finestra

Ad esempio

def link 
    @url = 'www.google.com' 
    ****??? Open @url ?? *** with target blank? 
end 
+0

Vedere anche https://stackoverflow.com/a/17685988/2917523 se è necessario aprire un URL nella finestra _parent_ dal controller, non è l'ideale, ma è possibile. –

risposta

9

Questo non è possibile per direttamente dal controllore. L'utilizzo di redirect_to @url ha l'effetto di aprire un url nella stessa "finestra", in quanto invia semplicemente un'istruzione di reindirizzamento HTTP al browser. redirect_to non è in grado di aprire nuove finestre. Il controller si trova sul lato server e l'apertura di una nuova finestra appartiene al lato client.

Alcune opzioni:

a) rendere un legame con <%= link_to 'Google', 'google.com', :target => '_blank' %> o <a href="google.com" target="_blank">Google</a> cui l'utente può fare clic su una nuova visione

b) utilizzare JavaScript per aprire il collegamento automaticamente, ma attenzione che i browser possono trattare come popup e bloccarlo

Combinando queste opzioni è possibile aprire i collegamenti in una nuova finestra per i browser/utenti che lo consentono e tornare a un URL normale nel caso in cui non funzionasse.

+0

Solo un link normale, ovvero <% = link_to 'Google', 'http://www.google.com',: target => '_blank'%> o Google

+0

Perché non modificare la risposta? – mliebelt

0

Non è possibile farlo nei binari, perché lo script viene eseguito su un server. Usa Javascript per lavorare con il browser sul lato client.

4

Come gli altri sottolineano, non è possibile (e non dovrebbe) farlo nel controller. Dal punto di vista è possibile utilizzare

<%= link_to @url, :target => "_blank" %> 
3

Beh, se non fosse che si PUOI NON farlo è, è solo una specie di processo contorto. L'ho fatto in un progetto a cui sto lavorando. Fondamentalmente, è una miscela di bontà di Rails e Javascript. Ho semplicemente passato un avviso flash sulla creazione di un'istanza, quindi ho usato uno script per impostare la nota flash uguale a una variabile js e una redirect_url. Se quel particolare avviso flash si apre su quella pagina, reindirizza nello script js. Come ho detto, è mod hack incisione, ma funziona per i miei scopi.

Problemi correlati