71

我是 Rails 3 的新手,我想在下面的 link_to 助手中添加 (:target => "_blank")

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

但我想使用 application_helper 来定义 link_to 方法。

  1. 如何在 application_helper 中定义 link_to 方法?
  2. 如何在 link_to 方法中通过类:“btn btn-large btn-primary”?

谢谢您的帮助...

4

2 回答 2

145

为什么要覆盖link_to?它已经在 Rails 中定义了,只需像这样使用它:

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

编辑:好的,明白了。我建议不要覆盖这种常见的方法,所以创建另一个:

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

它应该可以解决问题

于 2012-08-08T23:03:56.087 回答
5

添加到 Anthony 的回答中,这更类似于 Rails 的link_to实现,包括对块的支持和不传递参数:

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
于 2014-12-20T05:20:28.680 回答