Ruby on rails 3.1 Rails:如何在目标为空的情况下将链接添加到

Ruby on rails 3.1 Rails:如何在目标为空的情况下将链接添加到,ruby-on-rails-3.1,Ruby On Rails 3.1,我是rails 3的新手,我想在下面添加(:target=>“\u blank”)来将\u链接到帮助程序 link_to "GOOGLE", 'http://www.google.com', class: "btn btn-large btn-primary" 但是我想使用应用程序帮助器来定义link-to方法 如何在application\u helper中定义链接到方法 如何在link_to方法中传递类:“btn btn large btn primary” 感谢您的帮助…您为什么要覆盖链

我是rails 3的新手,我想在下面添加(:target=>“\u blank”)来将\u链接到帮助程序

link_to "GOOGLE", 'http://www.google.com', class: "btn btn-large btn-primary"
但是我想使用应用程序帮助器来定义link-to方法

  • 如何在application\u helper中定义链接到方法
  • 如何在link_to方法中传递类:“btn btn large btn primary”
    感谢您的帮助…

    您为什么要覆盖链接到?它已经在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
    

    它应该做到这一点

    再加上Anthony的答案,这更像Rails的
    链接到
    实现,包括对块的支持和不传递参数:

    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
    

    谢谢你的快速回复。我不想重复我自己(干),在每个指向helper的链接中放置:target=>“\u blank”。。所以我想通过在应用程序\u helper中创建一个方法,将:target=>“\u blank”与链接\u to helper合并。但是我很难通过课程:“btn btn large btn primary”到应用程序中的新link\u to方法。\u helper.Ok编辑了我的答案,看一看。使用
    link\u to\u blank
    相反,我建议不要覆盖
    link\u to
    ,因为这是一种非常广泛使用的方法。link\u to\u blank就像一个符咒,它成功了!非常感谢。请参阅我的答案,了解一个也支持块且不传递参数的方法。在多个位置向函数调用添加属性/属性/参数并不完全违反DRY原则。有时,人们对编程概念的迷恋达到了过度杀戮的程度(我将其称为上面的
    link\u to\u blank
    函数)。这种对概念的过度应用是cargo cult编程的开始。