| Module | ActionView::Helpers::UrlHelper |
| In: |
vendor/actionpack/lib/action_view/helpers/url_helper.rb
|
Provides a set of methods for making easy links and getting urls that depend on the controller and action. This means that you can use the same format for links in the views that you do in the controller. The different methods are even named synchronously, so link_to uses that same url as is generated by url_for, which again is the same url used for redirection in redirect_to.
Creates a link tag on the image residing at the src using an URL created by the set of options. This takes the same options as url_for. For a list, see the url_for documentation in classes/ActionController/Base.html#M000079. It’s also possible to pass a string instead of an options hash to get a link tag that just points without consideration. The html_options works jointly for the image and ahref tag by letting the following special values enter the options on the image and the rest goes to the ahref:
The src can be supplied as a…
Examples:
link_image_to "logo", { :controller => "home" }, :alt => "Homepage", :size => "45x80"
link_image_to "delete", { :action => "destroy" }, :size => "10x10", :confirm => "Are you sure?", "class" => "admin"
# File vendor/actionpack/lib/action_view/helpers/url_helper.rb, line 55
55: def link_image_to(src, options = {}, html_options = {}, *parameters_for_method_reference)
56: image_options = { "src" => src.include?("/") ? src : "/images/#{src}" }
57: image_options["src"] += ".png" unless image_options["src"].include?(".")
58:
59: html_options = html_options.stringify_keys
60: if html_options["alt"]
61: image_options["alt"] = html_options["alt"]
62: html_options.delete "alt"
63: else
64: image_options["alt"] = src.split("/").last.split(".").first.capitalize
65: end
66:
67: if html_options["size"]
68: image_options["width"], image_options["height"] = html_options["size"].split("x")
69: html_options.delete "size"
70: end
71:
72: if html_options["border"]
73: image_options["border"] = html_options["border"]
74: html_options.delete "border"
75: end
76:
77: if html_options["align"]
78: image_options["align"] = html_options["align"]
79: html_options.delete "align"
80: end
81:
82: link_to(tag("img", image_options), options, html_options, *parameters_for_method_reference)
83: end
Creates a link tag of the given name using an URL created by the set of options. See the valid options in classes/ActionController/Base.html#M000021. It’s also possible to pass a string instead of an options hash to get a link tag that just points without consideration. If nil is passed as a name, the link itself will become the name. The html_options have a special feature for creating javascript confirm alerts where if you pass :confirm => ‘Are you sure?’, the link will be guarded with a JS popup asking that question. If the user accepts, the link is processed, otherwise not.
Example:
link_to "Delete this page", { :action => "destroy", :id => @page.id }, :confirm => "Are you sure?"
# File vendor/actionpack/lib/action_view/helpers/url_helper.rb, line 23
23: def link_to(name, options = {}, html_options = nil, *parameters_for_method_reference)
24: html_options = (html_options || {}).stringify_keys
25: convert_confirm_option_to_javascript!(html_options)
26: if options.is_a?(String)
27: content_tag "a", name || options, (html_options || {}).merge("href" => options)
28: else
29: content_tag(
30: "a", name || url_for(options, *parameters_for_method_reference),
31: (html_options || {}).merge("href" => url_for(options, *parameters_for_method_reference))
32: )
33: end
34: end
Create a link tag of the given name using an URL created by the set of options, if condition is true, in which case only the name is returned (or the given block is yielded, if one exists).
# File vendor/actionpack/lib/action_view/helpers/url_helper.rb, line 111
111: def link_to_if(condition, name, options = {}, html_options = {}, *parameters_for_method_reference, &block)
112: link_to_unless !condition, name, options, html_options, *parameters_for_method_reference, &block
113: end
Alias for link_image_to
Create a link tag of the given name using an URL created by the set of options, unless condition is true, in which case only the name is returned (or the given block is yielded, if one exists).
# File vendor/actionpack/lib/action_view/helpers/url_helper.rb, line 97
97: def link_to_unless(condition, name, options = {}, html_options = {}, *parameters_for_method_reference, &block)
98: if condition
99: if block_given?
100: block.arity <= 1 ? yield(name) : yield(name, options, html_options, *parameters_for_method_reference)
101: else
102: html_escape(name)
103: end
104: else
105: link_to(name, options, html_options, *parameters_for_method_reference)
106: end
107: end
Creates a link tag of the given name using an URL created by the set of options, unless the current request uri is the same as the link’s, in which case only the name is returned (or the given block is yielded, if one exists). This is useful for creating link bars where you don’t want to link to the page currently being viewed.
# File vendor/actionpack/lib/action_view/helpers/url_helper.rb, line 91
91: def link_to_unless_current(name, options = {}, html_options = {}, *parameters_for_method_reference, &block)
92: link_to_unless current_page?(options), name, options, html_options, *parameters_for_method_reference, &block
93: end
Creates a link tag for starting an email to the specified email_address, which is also used as the name of the link unless name is specified. Additional HTML options, such as class or id, can be passed in the html_options hash.
You can also make it difficult for spiders to harvest email address by obfuscating them. Examples:
mail_to "me@domain.com", "My email", :encode => "javascript" # =>
<script type="text/javascript" language="javascript">eval(unescape('%64%6f%63%75%6d%65%6e%74%2e%77%72%69%74%65%28%27%3c%61%20%68%72%65%66%3d%22%6d%61%69%6c%74%6f%3a%6d%65%40%64%6f%6d%61%69%6e%2e%63%6f%6d%22%3e%4d%79%20%65%6d%61%69%6c%3c%2f%61%3e%27%29%3b'))</script>
mail_to "me@domain.com", "My email", :encode => "hex" # =>
<a href="mailto:%6d%65@%64%6f%6d%61%69%6e.%63%6f%6d">My email</a>
# File vendor/actionpack/lib/action_view/helpers/url_helper.rb, line 125
125: def mail_to(email_address, name = nil, html_options = {})
126: html_options = html_options.stringify_keys
127: encode = html_options.delete("encode")
128: string = ''
129: if encode == 'javascript'
130: tmp = "document.write('#{content_tag("a", name || email_address, html_options.merge({ "href" => "mailto:"+email_address.to_s }))}');"
131: for i in 0...tmp.length
132: string << sprintf("%%%x",tmp[i])
133: end
134: "<script type=\"text/javascript\" language=\"javascript\">eval(unescape('#{string}'))</script>"
135: elsif encode == 'hex'
136: for i in 0...email_address.length
137: if email_address[i,1] =~ /\w/
138: string << sprintf("%%%x",email_address[i])
139: else
140: string << email_address[i,1]
141: end
142: end
143: content_tag "a", name || email_address, html_options.merge({ "href" => "mailto:#{string}" })
144: else
145: content_tag "a", name || email_address, html_options.merge({ "href" => "mailto:#{email_address}" })
146: end
147: end
Returns the URL for the set of options provided. This takes the same options as url_for. For a list, see the url_for documentation in classes/ActionController/Base.html#M000079.
# File vendor/actionpack/lib/action_view/helpers/url_helper.rb, line 10
10: def url_for(options = {}, *parameters_for_method_reference)
11: if Hash === options then options = { :only_path => true }.update(options.stringify_keys) end
12: @controller.send(:url_for, options, *parameters_for_method_reference)
13: end