问题
I am new to rails 3, I would like to add (:target => "_blank") to link_to helper below
link_to "GOOGLE", 'http://www.google.com', class: "btn btn-large btn-primary"
But I would like to use the application_helper to define link_to method.
- How do I define the link_to methd in application_helper?
- How do I pass the class: "btn btn-large btn-primary" in the link_to method?
Thank you for your assistance...
回答1:
Why would you want to override link_to
? It's already defined in Rails, just use it like this :
link_to "GOOGLE", "http://www.google.com", target: "_blank", class: "btn btn-large btn-primary"
Edit: OK, understood. I'd advise against overriding such a common method so create another one :
def link_to_blank(body, url_options = {}, html_options = {})
link_to(body, url_options, html_options.merge(target: "_blank"))
end
It should do the trick
回答2:
Adding to Anthony's answer, this more closely resembles Rails' link_to
implementation, including support for blocks and passing no parameters:
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
来源:https://stackoverflow.com/questions/11874317/link-to-with-target-blank