public Method

RouteBuilder.divide_route_options(segments, options)

Split the given hash of options into requirement and default hashes. The segments are passed alongside in order to distinguish between default values and requirements.

Source Code

# File action_controller/routing/builder.rb, line 62
def divide_route_options(segments, options)
  options = options.dup

  if options[:namespace]
    options[:controller] = "#{options[:path_prefix]}/#{options[:controller]}"
    options.delete(:path_prefix)
    options.delete(:name_prefix)
    options.delete(:namespace)
  end

  requirements = (options.delete(:requirements) || {}).dup
  defaults     = (options.delete(:defaults)     || {}).dup
  conditions   = (options.delete(:conditions)   || {}).dup

  path_keys = segments.collect { |segment| segment.key if segment.respond_to?(:key) }.compact
  options.each do |key, value|
    hash = (path_keys.include?(key) && ! value.is_a?(Regexp)) ? defaults : requirements
    hash[key] = value
  end

  [defaults, requirements, conditions]
end
Comments

Have your say
Please use Textile formatting (click here for a cheat sheet). Use <code/> and <pre/> for code samples.
Click here to login with OpenID to to post comments.