Module: Umlaut::UrlGeneration
- Included in:
- Helper
- Defined in:
- app/helpers/umlaut/url_generation.rb
Overview
A Rails view helper module, which over-rides #url_for and some other rails url-generating methods, so that they can be forced to generate absolute URLs if a controller iVar is set to say so.
This is used by our partial HTML api responses, so make sure html snippets have absolute URLs in them.
Instance Method Summary collapse
-
#path_to_image(source) ⇒ Object
(also: #image_path)
over-ride path_to_image to generate complete urls with hostname and everything if @generate_url_with_host is set.
- #path_to_javascript(*args) ⇒ Object
-
#path_to_stylesheet(*args) ⇒ Object
We want stylesheets and javascripts to do the exact same thing, magic of polymorphous super() makes it work:.
-
#url_for(*arguments) ⇒ Object
Over-ride to allow default forcing of urls with hostnames.
Instance Method Details
#path_to_image(source) ⇒ Object Also known as: image_path
over-ride path_to_image to generate complete urls with hostname and everything if @generate_url_with_host is set. This makes image_tag generate src with full url with host. See #url_for
28 29 30 31 32 33 34 35 |
# File 'app/helpers/umlaut/url_generation.rb', line 28 def path_to_image(source) path = super(source) if @generate_urls_with_host protocol = request.protocol() path = protocol + request.host_with_port() + path end return path end |
#path_to_javascript(*args) ⇒ Object
51 52 53 54 55 56 57 |
# File 'app/helpers/umlaut/url_generation.rb', line 51 def path_to_javascript(*args) path = super if @generate_urls_with_host path = request.protocol() + request.host_with_port() + path end return path end |
#path_to_stylesheet(*args) ⇒ Object
We want stylesheets and javascripts to do the exact same thing, magic of polymorphous super() makes it work:
43 44 45 46 47 48 49 |
# File 'app/helpers/umlaut/url_generation.rb', line 43 def path_to_stylesheet(*args) path = super if @generate_urls_with_host path = request.protocol() + request.host_with_port() + path end return path end |
#url_for(*arguments) ⇒ Object
Over-ride to allow default forcing of urls with hostnames. This is neccesary for our partial_html_sections service to work properly. Just set @generate_url_with_host = true in your controller, and urls will be generated with hostnames for the remainder of that action.
15 16 17 18 19 20 21 22 23 |
# File 'app/helpers/umlaut/url_generation.rb', line 15 def url_for(*arguments) url = super if @generate_urls_with_host && url.starts_with?("/") #regex take root url and get just scheme/port part, no path. # the path we want is in our own url we will add on. url = root_url.gsub(/\A(.*\/\/[^\/]+)\/.*\Z/, '\1') + url end return url end |