Ruby on rails 3.1 Rails:如何在目标为空的情况下将链接添加到
我是rails 3的新手,我想在下面添加(:target=>“\u blank”)来将\u链接到帮助程序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” 感谢您的帮助…您为什么要覆盖链
link_to "GOOGLE", 'http://www.google.com', class: "btn btn-large btn-primary"
但是我想使用应用程序帮助器来定义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
它应该做到这一点再加上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编程的开始。