Class: ActionController::Routing::Optimisation::PositionalArgumentsWithAdditionalParams
- Inherits:
-
PositionalArguments
- Object
- Optimiser
- PositionalArguments
- ActionController::Routing::Optimisation::PositionalArgumentsWithAdditionalParams
- Defined in:
- lib/action_controller/routing/optimisations.rb
Overview
This case is mostly the same as the positional arguments case above, but it supports additional query parameters as the last argument
Constant Summary
Constants inherited from Optimiser
Optimiser::GLOBAL_GUARD_CONDITIONS
Instance Attribute Summary
Attributes inherited from Optimiser
Instance Method Summary collapse
-
#applicable? ⇒ Boolean
To avoid generating “localhost/?host=foo.example.com” we can’t use this optimisation on routes without any segments.
-
#generation_code ⇒ Object
This case uses almost the same code as positional arguments, but add a question mark and args.last.to_query on the end, unless the last arg is empty.
- #guard_conditions ⇒ Object
Methods inherited from Optimiser
Constructor Details
This class inherits a constructor from ActionController::Routing::Optimisation::Optimiser
Instance Method Details
#applicable? ⇒ Boolean
To avoid generating “localhost/?host=foo.example.com” we can’t use this optimisation on routes without any segments
122 123 124 |
# File 'lib/action_controller/routing/optimisations.rb', line 122 def applicable? super && route.segment_keys.size > 0 end |
#generation_code ⇒ Object
This case uses almost the same code as positional arguments, but add a question mark and args.last.to_query on the end, unless the last arg is empty
116 117 118 |
# File 'lib/action_controller/routing/optimisations.rb', line 116 def generation_code super.insert(-2, '#{\'?\' + args.last.to_query unless args.last.empty?}') end |
#guard_conditions ⇒ Object
108 109 110 111 |
# File 'lib/action_controller/routing/optimisations.rb', line 108 def guard_conditions ["args.size == #{route.segment_keys.size + 1}"] + UrlRewriter::RESERVED_OPTIONS.collect{ |key| "!args.last.has_key?(:#{key})" } end |