Spec-Zone.ru › Ruby on Rails 7.2

класс ActionDispatch::Routing::Mapper

Родитель:
Объект
Включенные модули:
ActionDispatch::Routing::Mapper::Base, ActionDispatch::Routing::Mapper::HttpHelpers, ActionDispatch::Routing::Redirection, ActionDispatch::Routing::Mapper::Scoping, ActionDispatch::Routing::Mapper::Concerns, ActionDispatch::Routing::Mapper::Resources, ActionDispatch::Routing::Mapper::CustomUrls

Константы

URL_OPTIONS

Публичные методы класса

normalize_name(name) Показать исходный код
# File actionpack/lib/action_dispatch/routing/mapper.rb, line 429
def self.normalize_name(name)
  normalize_path(name)[1..-1].tr("/", "_")
end
normalize_path(path) Показать исходный код
# File actionpack/lib/action_dispatch/routing/mapper.rb, line 414
def self.normalize_path(path)
  path = Journey::Router::Utils.normalize_path(path)

  # the path for a root URL at this point can be something like
  # "/(/:locale)(/:platform)/(:browser)", and we would want
  # "/(:locale)(/:platform)(/:browser)" reverse "/(", "/((" etc to "(/", "((/" etc
  path.gsub!(%r{/(\(+)/?}, '\1/')
  # if a path is all optional segments, change the leading "(/" back to "/(" so it
  # evaluates to "/" when interpreted with no options. Unless, however, at least
  # one secondary segment consists of a static part, ex.
  # "(/:locale)(/pages/:page)"
  path.sub!(%r{^(\(+)/}, '/\1') if %r{^(\(+[^)]+\))(\(+/:[^)]+\))*$}.match?(path)
  path
end

Вызывает Journey::Router::Utils.normalize_path, затем гарантирует, что /(:locale) становится (/:locale). За исключением случаев корневого пути, где предыдущий вариант является правильным.

© 2004–2021 David Heinemeier Hansson
Licensed under the MIT License.

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API