Module: Mack::Routes::Urls
- Included in:
- Application, Spec::Example::ExampleMethods
- Defined in:
- lib/mack/routing/urls.rb
Overview
This module is the repository for named_routes. See Mack::Routes::RouteMap for more information.
Class Method Summary collapse
-
.create_method(sym, &block) ⇒ Object
:nodoc:.
Instance Method Summary collapse
-
#redirect_html(original_path, new_path, status) ⇒ Object
Builds a simple HTML page to be rendered when a redirect occurs.
-
#url_for_pattern(url, options = {}) ⇒ Object
Takes a url pattern and merges it with the options to hopefully produce a well formed url.
Class Method Details
.create_method(sym, &block) ⇒ Object
:nodoc:
81 82 83 |
# File 'lib/mack/routing/urls.rb', line 81 def self.create_method(sym, &block) # :nodoc: define_method(sym, &block) end |
Instance Method Details
#redirect_html(original_path, new_path, status) ⇒ Object
Builds a simple HTML page to be rendered when a redirect occurs. Hopefully no one sees the HTML, but in case the browser won’t do the redirect it’s nice to let people know what’s happening.
65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 |
# File 'lib/mack/routing/urls.rb', line 65 def redirect_html(original_path, new_path, status) # :nodoc: %{ <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"> <html> <head> <title>#{status} Found</title> </head> <body> <h1>Found</h1> <p>The document has moved <a href="#{new_path}">here</a>.</p> </body> </html> } end |
#url_for_pattern(url, options = {}) ⇒ Object
Takes a url pattern and merges it with the options to hopefully produce a well formed url. Query string parameters will get escaped.
Example:
url_for_pattern("/:controller/:action/:id", {:controller => :blog, :action => :show, :id => 1})
# => "/blog/show/1
url_for_pattern("/:controller/:action/:id", {:controller => :blog, :action => :show})
# => "/blog/show/:id"
url_for_pattern("/blog/:id", {:id => 1})
# => "/blog/1
url_for_pattern("/blog/:id", {:id => 1, :n_id => 2})
# => "/blog/1?n_id=2
18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 |
# File 'lib/mack/routing/urls.rb', line 18 def url_for_pattern(url, = {}) u = url.dup u = "/" if url.blank? unused_params = [] format = nil = {:host => [:host], :port => [:port], :scheme => [:scheme]} - [:host, :port, :scheme, :runner_block] if [:host] hu = [:host].dup .each_pair do |k, v| vp = Rack::Utils.escape(v.to_param) unless hu.gsub!(":#{k}", vp).nil? - [k.to_sym] end end [:host] = hu end .each_pair do |k, v| unless k.to_sym == :format if u.match(/\*#{k}/) vp = [v].flatten.collect {|c| Rack::Utils.escape(c.to_param)} if u.gsub!("*#{k}", File.join(vp)).nil? unused_params << "#{Rack::Utils.escape(k)}=#{vp}" end else vp = Rack::Utils.escape(v.to_param) if u.gsub!(":#{k}", vp).nil? unused_params << "#{Rack::Utils.escape(k)}=#{vp}" end end else format = v end end if format u << ".#{format}" end unless unused_params.empty? u << "?" << unused_params.sort.join("&") end File.join((), u) # u end |