2011-10-21 17 views
8

Estoy en mi controlador de aplicaciones y tengo una cadena url. ¿Cómo le digo a la aplicación que abra la url en el navegador en una nueva ventana? ¿Hay alguna manera de establecer el objetivo en blanco?Ruby/Rails - Abrir una URL desde el controlador en una nueva ventana

Por ejemplo

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

Consulte también https://stackoverflow.com/a/17685988/2917523 si necesita abrir una url en la ventana _parent_ desde el controlador - no es ideal, pero es posible. –

Respuesta

9

esto no es posible a directamente desde el controlador. El uso de redirect_to @url tiene el efecto de abrir una url en la misma "ventana", ya que simplemente envía una instrucción de redireccionamiento HTTP al navegador. redirect_to no es capaz de abrir ventanas nuevas. El controlador reside en el lado del servidor y abrir una nueva ventana pertenece al lado del cliente.

Algunas opciones:

a) hacer un enlace con <%= link_to 'Google', 'google.com', :target => '_blank' %> o <a href="google.com" target="_blank">Google</a> que el usuario puede hacer clic en en un nuevo punto de vista

b) el uso de JavaScript para abrir el enlace de forma automática, pero ten en cuenta que los navegadores pueden tratar esto como una ventana emergente y bloquearlo

Al combinar estas opciones, puede abrir los enlaces en una nueva ventana para los navegadores/usuarios que lo permiten, y volver a una URL normal en caso de que eso no funcione.

+0

Solo un enlace normal, es decir, <% = link_to 'Google', 'http://www.google.com',: target => '_blank'%> o Google

+0

¿Por qué no cambia su respuesta? – mliebelt

0

No puede hacer eso en rieles, porque su script se está ejecutando en un servidor. Utilice Javascript para trabajar con el navegador en el lado del cliente.

4

Como los otros señalan, no se puede (y no se debe) hacer esto en el controlador. En la vista que se puede utilizar

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

Bueno, no es que NO PUEDE hacerlo es, es sólo un poco de un proceso complicado. Hice esto en un proyecto en el que estoy trabajando. Básicamente, es una mezcla de bondad Rails y Javascript. Simplemente pasé un aviso de flash sobre la creación de una instancia, y luego usé un script para establecer ese aviso de flash igual a una variable js, y una redirect_url. Si ese aviso de flash particular aparece en esa página, redirige en el script js. Como dije, es hack hackear hack, pero funciona para mis propósitos.

Cuestiones relacionadas