Spec-Zone.ru › Ruby on Rails 7.2

модуль ActionController::UrlFor

Включённые модули:
AbstractController::UrlFor

Контроллер действия UrlFor

Включает url_for в класс-хост. Класс должен предоставить RouteSet, реализовав метод _routes. В противном случае будет поднято исключение.

В дополнение к AbstractController::UrlFor, этот модуль обращается к HTTP-слою для определения параметров URL, таких как host. Для этого модуль требует, чтобы класс-хост реализовывал env, который должен быть совместим с Rack, и request, возвращающий экземпляр ActionDispatch::Request.

class RootUrl
  include ActionController::UrlFor
  include Rails.application.routes.url_helpers

  delegate :env, :request, to: :controller

  def initialize(controller)
    @controller = controller
    @url        = root_path # named route from the application.
  end
end

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

new(...) Показать исходный код
# File actionpack/lib/action_controller/metal/url_for.rb, line 32
def initialize(...)
  super
  @_url_options = nil
end
Вызывает метод суперкласса

Публичные методы экземпляра

url_options() Показать исходный код
# File actionpack/lib/action_controller/metal/url_for.rb, line 37
def url_options
  @_url_options ||= {
    host: request.host,
    port: request.optional_port,
    protocol: request.protocol,
    _recall: request.path_parameters
  }.merge!(super).freeze

  if (same_origin = _routes.equal?(request.routes)) ||
     (script_name = request.engine_script_name(_routes)) ||
     (original_script_name = request.original_script_name)

    options = @_url_options.dup
    if original_script_name
      options[:original_script_name] = original_script_name
    else
      if same_origin
        options[:script_name] = request.script_name.empty? ? "" : request.script_name.dup
      else
        options[:script_name] = script_name
      end
    end
    options.freeze
  else
    @_url_options
  end
end
Вызывает метод суперкласса

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

Spec-Zone.ru

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