Sha256: 6081ee9bc40c6649d501b23709b8b7ea533f63568657d4301f0efd225ca46d28
Contents?: true
Size: 977 Bytes
Versions: 2
Compression:
Stored size: 977 Bytes
Contents
module SinatraMore module RoutingHelpers # Used to retrieve the full url for a given named route alias from the named_paths data # Accepts parameters which will be substituted into the url if necessary # url_for(:accounts) => '/accounts' # url_for(:account, :id => 5) => '/account/5' # url_for(:admin, show, :id => 5, :name => "demo") => '/admin/path/5/demo' def url_for(*route_name) values = route_name.extract_options! mapped_url = self.class.named_paths[route_name] || self.class.named_paths[route_name.dup.unshift(self.class.app_name)] raise SinatraMore::RouteNotFound.new("Route alias #{route_name.inspect} is not mapped to a url") unless mapped_url result_url = String.new(mapped_url) result_url.scan(%r{/?(:\S+?)(?:/|$)}).each do |placeholder| value_key = placeholder[0][1..-1].to_sym result_url.gsub!(Regexp.new(placeholder[0]), values[value_key].to_s) end result_url end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
sinatra_more-0.3.16 | lib/sinatra_more/routing_plugin/routing_helpers.rb |
sinatra_more-0.3.15 | lib/sinatra_more/routing_plugin/routing_helpers.rb |