link_to与目标空白

时间:2012-08-08 22:46:25

标签: ruby-on-rails-3.1

我是rails 3的新手,我想将(:target =>“_ blank”)添加到link_to helper下面

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

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

  1. 如何在application_helper中定义link_to methd?
  2. 如何通过class:“btn btn-large btn-primary”在link_to方法中?
  3. 感谢您的协助......

2 个答案:

答案 0 :(得分:111)

为什么要覆盖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

它应该做的伎俩

答案 1 :(得分:4)

添加到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