2012-08-08 10 views
33

Soy nuevo a los carriles 3, me gustaría añadir (: target => "_blank") a ayudante link_to continuaciónlink_to con destino en blanco

link_to "GOOGLE", 'http://www.google.com', class: "btn btn-large btn-primary" 

pero me gustaría utilizar el application_helper para definir link_to método.

  1. ¿Cómo se define el link_to methd en application_helper?
  2. ¿Cómo paso la clase: "btn btn-large btn-primary" en el método link_to?

Gracias por su ayuda ...

Respuesta

81

¿Por qué quieres anular link_to? Ya está definido en Rails, simplemente úsela así:

link_to "GOOGLE", "http://www.google.com", target: "_blank", class: "btn btn-large btn-primary" 

Editar: OK, entendido. Te aconsejo sustituir un método tan común por lo que crear otro:

def link_to_blank(body, url_options = {}, html_options = {}) 
    link_to(body, url_options, html_options.merge(target: "_blank")) 
end 

Se debe hacer el truco

+0

Gracias por su rápida respuesta. No quería repetirme (DRY), colocando: target => "_blank" en cada link_to helper ... así que estaba pensando fusionar el: target => "_blank" con link_to helper creando un método en application_helper. Pero tengo dificultades para aprobar la clase: "btn btn-large btn-primary" para el nuevo método link_to en application_helper. – joe

+0

Ok edité mi respuesta, eche un vistazo. Use 'link_to_blank' en su lugar, aconsejaría no anular' link_to' ya que es un método muy utilizado. –

+0

¡Link_to_blank funciona como un amuleto y funcionó! Muchas gracias. – joe

4

Agregando a la respuesta de Anthony, esto se asemeja más a Rails link_to aplicación, incluyendo soporte para bloques y no pasa ningún parámetro:

def link_to_blank(name = nil, options = nil, html_options = nil, &block) 
    target_blank = {target: "_blank"} 
    if block_given? 
    options ||= {} 
    options = options.merge(target_blank) 
    else 
    html_options ||= {} 
    html_options = html_options.merge(target_blank) 
    end 
    link_to(name, options, html_options, &block) 
end