Spec-Zone.ru › Ruby on Rails 4.2

модуль ActionController::UrlFor

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

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

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

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 25
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?(env["action_dispatch.routes".freeze])) ||
     (script_name = env["ROUTES_#{_routes.object_id}_SCRIPT_NAME"]) ||
     (original_script_name = env['ORIGINAL_SCRIPT_NAME'.freeze])

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

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

Spec-Zone.ru

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