Module: ActionView::Helpers::UrlHelper
- Defined in:
- lib/action_view/helpers/url_helper.rb
Overview
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.
Instance Method Summary collapse
-
#current_page?(options) ⇒ Boolean
Returns true if the current page uri is generated by the options passed (in url_for format).
-
#link_image_to(src, options = {}, html_options = {}, *parameters_for_method_reference) ⇒ Object
(also: #link_to_image)
This tag is deprecated.
-
#link_to(name, options = {}, html_options = nil, *parameters_for_method_reference) ⇒ Object
Creates a link tag of the given
name
using an URL created by the set ofoptions
. -
#link_to_if(condition, name, options = {}, html_options = {}, *parameters_for_method_reference, &block) ⇒ Object
Create a link tag of the given
name
using an URL created by the set ofoptions
, ifcondition
is true, in which case only the name is returned (or the given block is yielded, if one exists). -
#link_to_unless(condition, name, options = {}, html_options = {}, *parameters_for_method_reference, &block) ⇒ Object
Create a link tag of the given
name
using an URL created by the set ofoptions
, unlesscondition
is true, in which case only the name is returned (or the given block is yielded, if one exists). -
#link_to_unless_current(name, options = {}, html_options = {}, *parameters_for_method_reference, &block) ⇒ Object
Creates a link tag of the given
name
using an URL created by the set ofoptions
, 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). -
#mail_to(email_address, name = nil, html_options = {}) ⇒ Object
mail_to “[email protected]”, “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>.
-
#url_for(options = {}, *parameters_for_method_reference) ⇒ Object
Returns the URL for the set of
options
provided.
Instance Method Details
#current_page?(options) ⇒ Boolean
Returns true if the current page uri is generated by the options passed (in url_for format).
133 134 135 |
# File 'lib/action_view/helpers/url_helper.rb', line 133 def current_page?() url_for() == @request.request_uri end |
#link_image_to(src, options = {}, html_options = {}, *parameters_for_method_reference) ⇒ Object Also known as: link_to_image
This tag is deprecated. Combine the link_to and AssetTagHelper::image_tag yourself instead, like:
link_to(image_tag("rss", :size => "30x45", :border => 0), "http://www.example.com")
38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 |
# File 'lib/action_view/helpers/url_helper.rb', line 38 def link_image_to(src, = {}, = {}, *parameters_for_method_reference) = { "src" => src.include?("/") ? src : "/images/#{src}" } ["src"] += ".png" unless ["src"].include?(".") = .stringify_keys if ["alt"] ["alt"] = ["alt"] .delete "alt" else ["alt"] = src.split("/").last.split(".").first.capitalize end if ["size"] ["width"], ["height"] = ["size"].split("x") .delete "size" end if ["border"] ["border"] = ["border"] .delete "border" end if ["align"] ["align"] = ["align"] .delete "align" end link_to(tag("img", ), , , *parameters_for_method_reference) end |
#link_to(name, options = {}, html_options = nil, *parameters_for_method_reference) ⇒ Object
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?"
23 24 25 26 27 28 29 30 31 32 33 34 |
# File 'lib/action_view/helpers/url_helper.rb', line 23 def link_to(name, = {}, = nil, *parameters_for_method_reference) = ( || {}).stringify_keys convert_confirm_option_to_javascript!() if .is_a?(String) content_tag "a", name || , ( || {}).merge("href" => ) else content_tag( "a", name || url_for(, *parameters_for_method_reference), ( || {}).merge("href" => url_for(, *parameters_for_method_reference)) ) end end |
#link_to_if(condition, name, options = {}, html_options = {}, *parameters_for_method_reference, &block) ⇒ Object
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).
94 95 96 |
# File 'lib/action_view/helpers/url_helper.rb', line 94 def link_to_if(condition, name, = {}, = {}, *parameters_for_method_reference, &block) link_to_unless !condition, name, , , *parameters_for_method_reference, &block end |
#link_to_unless(condition, name, options = {}, html_options = {}, *parameters_for_method_reference, &block) ⇒ Object
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).
80 81 82 83 84 85 86 87 88 89 90 |
# File 'lib/action_view/helpers/url_helper.rb', line 80 def link_to_unless(condition, name, = {}, = {}, *parameters_for_method_reference, &block) if condition if block_given? block.arity <= 1 ? yield(name) : yield(name, , , *parameters_for_method_reference) else html_escape(name) end else link_to(name, , , *parameters_for_method_reference) end end |
#link_to_unless_current(name, options = {}, html_options = {}, *parameters_for_method_reference, &block) ⇒ Object
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.
74 75 76 |
# File 'lib/action_view/helpers/url_helper.rb', line 74 def link_to_unless_current(name, = {}, = {}, *parameters_for_method_reference, &block) link_to_unless current_page?(), name, , , *parameters_for_method_reference, &block end |
#mail_to(email_address, name = nil, html_options = {}) ⇒ Object
mail_to “[email protected]”, “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 "[email protected]", "My email", :encode => "hex" # =>
<a href="mailto:%6d%65@%64%6f%6d%61%69%6e.%63%6f%6d">My email</a>
108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 |
# File 'lib/action_view/helpers/url_helper.rb', line 108 def mail_to(email_address, name = nil, = {}) = .stringify_keys encode = .delete("encode") string = '' if encode == 'javascript' tmp = "document.write('#{content_tag("a", name || email_address, .merge({ "href" => "mailto:"+email_address.to_s }))}');" for i in 0...tmp.length string << sprintf("%%%x",tmp[i]) end "<script type=\"text/javascript\" language=\"javascript\">eval(unescape('#{string}'))</script>" elsif encode == 'hex' for i in 0...email_address.length if email_address[i,1] =~ /\w/ string << sprintf("%%%x",email_address[i]) else string << email_address[i,1] end end content_tag "a", name || email_address, .merge({ "href" => "mailto:#{string}" }) else content_tag "a", name || email_address, .merge({ "href" => "mailto:#{email_address}" }) end end |
#url_for(options = {}, *parameters_for_method_reference) ⇒ Object
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.
10 11 12 13 |
# File 'lib/action_view/helpers/url_helper.rb', line 10 def url_for( = {}, *parameters_for_method_reference) = { :only_path => true }.update(.symbolize_keys) if .kind_of? Hash @controller.send(:url_for, , *parameters_for_method_reference) end |