aboutsummaryrefslogtreecommitdiffstats
path: root/actionpack/lib/action_dispatch/routing/mapper.rb
diff options
context:
space:
mode:
authorAaron Patterson <aaron.patterson@gmail.com>2015-08-12 13:43:32 -0700
committerAaron Patterson <aaron.patterson@gmail.com>2015-08-12 14:30:53 -0700
commitb59ff24207c39ec69ab2d792c5ebb4e77c871f51 (patch)
treee06663fb09daf97649e71b43bc52e4677fc5ee02 /actionpack/lib/action_dispatch/routing/mapper.rb
parentf88c68a819b0abb93a0bf12d24caaa12e31c504b (diff)
downloadrails-b59ff24207c39ec69ab2d792c5ebb4e77c871f51.tar.gz
rails-b59ff24207c39ec69ab2d792c5ebb4e77c871f51.tar.bz2
rails-b59ff24207c39ec69ab2d792c5ebb4e77c871f51.zip
pull `via` extraction up
We're going to try pulling this up further, and check `via` validity sooner. This way we don't have to do a bunch of processing on `options` hashes only to find out that the route is incorrect
Diffstat (limited to 'actionpack/lib/action_dispatch/routing/mapper.rb')
-rw-r--r--actionpack/lib/action_dispatch/routing/mapper.rb11
1 files changed, 6 insertions, 5 deletions
diff --git a/actionpack/lib/action_dispatch/routing/mapper.rb b/actionpack/lib/action_dispatch/routing/mapper.rb
index 7a74774fdb..4f1c73764f 100644
--- a/actionpack/lib/action_dispatch/routing/mapper.rb
+++ b/actionpack/lib/action_dispatch/routing/mapper.rb
@@ -61,7 +61,7 @@ module ActionDispatch
attr_reader :requirements, :conditions, :defaults
attr_reader :to, :default_controller, :default_action, :as, :anchor
- def self.build(scope, set, path, as, controller, default_action, to, options)
+ def self.build(scope, set, path, as, controller, default_action, to, via, options)
formatted = options.delete(:format) { scope[:options] && scope[:options][:format] }
options = scope[:options].merge(options) if scope[:options]
@@ -76,10 +76,10 @@ module ActionDispatch
defaults = (scope[:defaults] || {}).dup
scope_constraints = scope[:constraints] || {}
- new set, path, defaults, as, controller, default_action, scope[:module], to, formatted, scope_constraints, scope[:blocks] || [], options
+ new set, path, defaults, as, controller, default_action, scope[:module], to, formatted, scope_constraints, scope[:blocks] || [], via, options
end
- def initialize(set, path, defaults, as, controller, default_action, modyoule, to, formatted, scope_constraints, blocks, options)
+ def initialize(set, path, defaults, as, controller, default_action, modyoule, to, formatted, scope_constraints, blocks, via, options)
@defaults = defaults
@set = set
@@ -89,7 +89,6 @@ module ActionDispatch
@as = as
@anchor = options.delete :anchor
- via = Array(options.delete(:via) { [] })
options_constraints = options.delete(:constraints) || {}
path = normalize_path! path, formatted
@@ -99,6 +98,7 @@ module ActionDispatch
options = normalize_options!(options, formatted, path_params, ast, modyoule)
split_options = constraints(options, path_params)
+
constraints = scope_constraints.merge Hash[split_options[:constraints] || []]
if options_constraints.is_a?(Hash)
@@ -1605,7 +1605,8 @@ module ActionDispatch
name_for_action(options.delete(:as), action)
end
- mapping = Mapping.build(@scope, @set, URI.parser.escape(path), as, controller, default_action, to, options)
+ via = Array(options.delete(:via) { [] })
+ mapping = Mapping.build(@scope, @set, URI.parser.escape(path), as, controller, default_action, to, via, options)
app, conditions, requirements, defaults, as, anchor = mapping.to_route
@set.add_route(app, conditions, requirements, defaults, as, anchor)
end