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. クラス「btn btn-large btn-primary」を link_to メソッドに渡すにはどうすればよいですか?

ご協力いただきありがとうございます...

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 に答える