Spec-Zone.ru › Ruby on Rails 6.0

модуль ActionController::UrlFor

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

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

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

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

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

url_options() Показать исходный код
# File actionpack/lib/action_controller/metal/url_for.rb, line 30
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–2019 David Heinemeier Hansson
Licensed under the MIT License.

Spec-Zone.ru

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