web-dev-qa-db-fra.com

link_to avec cible vide

Je suis nouveau sur Rails 3, je voudrais ajouter (: target => "_blank") à link_to helper ci-dessous

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

Mais je voudrais utiliser l'application_helper pour définir la méthode link_to.

  1. Comment définir la méthd link_to dans application_helper?
  2. Comment passer la classe: "btn btn-large btn-primary" dans la méthode link_to?

Merci pour votre aide...

49
joe

Pourquoi voudriez-vous remplacer link_to? Il est déjà défini dans Rails, utilisez-le simplement comme ceci:

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

Edit: OK, compris. Je déconseille de remplacer une telle méthode courante, alors créez-en une autre:

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

Ça devrait faire l'affaire

117
Anthony Alberto

Ajoutant à la réponse d'Anthony, cela ressemble plus à _ link_to implémentation, y compris la prise en charge des blocs et le passage d'aucun paramètre:

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
4
Benjamin Sullivan