Spec-Zone.ru › Ruby on Rails 4.1

модуль ActionView::RoutingUrlFor

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

url_for(options = nil) Показать исходный код

Возвращает URL для набора options. Принимает те же параметры, что и url_for в Action Controller (см. документацию для ActionController::Base#url_for). Обратите внимание, что по умолчанию :only_path равен true, поэтому вы получите относительный URL “/controller/action”, а не полный URL, например, «example.com/controller/action».

Параметры

  • :anchor - Указывает имя якоря, которое будет добавлено к пути.

  • :only_path - Если true, возвращает относительный URL (без протокола, имени хоста и порта) (true по умолчанию, если не указан :host).

  • :trailing_slash - Если true, добавляет конечный слеш, как в “/archive/2005/”. Обратите внимание, что это в настоящее время не рекомендуется, так как это нарушает кэширование.

  • :host - Переопределяет значение хоста по умолчанию (текущий), если указан.

  • :protocol - Переопределяет значение протокола по умолчанию (текущий), если указан.

  • :user - Инлайн аутентификация HTTP (извлекается только если :password также присутствует).

  • :password - Инлайн аутентификация HTTP (извлекается только если :user также присутствует).

Использование именованных маршрутов

Передача объекта (например, из Active Record) вместо хэша в качестве параметра options запустит именованный маршрут для этого объекта. Поиск будет осуществляться по имени класса. Таким образом, передача объекта Workshop попытается использовать маршрут workshop_path. Если у вас есть вложенный маршрут, такой как admin_workshop_path, вам нужно будет вызвать его явно (url_for не может угадать этот маршрут).

Неявное пространство имен контроллера

Контроллеры, переданные с помощью параметра :controller, сохранят свое пространство имен, если оно не является абсолютным.

Примеры

<%= url_for(action: 'index') %>
# => /blog/

<%= url_for(action: 'find', controller: 'books') %>
# => /books/find

<%= url_for(action: 'login', controller: 'members', only_path: false, protocol: 'https') %>
# => https://www.example.com/members/login/

<%= url_for(action: 'play', anchor: 'player') %>
# => /messages/play/#player

<%= url_for(action: 'jump', anchor: 'tax&ship') %>
# => /testing/jump/#tax&ship

<%= url_for(Workshop.new) %>
# relies on Workshop answering a persisted? call (and in this case returning false)
# => /workshops

<%= url_for(@workshop) %>
# calls @workshop.to_param which by default returns the id
# => /workshops/5

# to_param can be re-defined in a model to provide different URL names:
# => /workshops/1-workshop-name

<%= url_for("http://www.example.com") %>
# => http://www.example.com

<%= url_for(:back) %>
# if request.env["HTTP_REFERER"] is set to "http://www.example.com"
# => http://www.example.com

<%= url_for(:back) %>
# if request.env["HTTP_REFERER"] is not set or is blank
# => javascript:history.back()

<%= url_for(action: 'index', controller: 'users') %>
# Assuming an "admin" namespace
# => /admin/users

<%= url_for(action: 'index', controller: '/users') %>
# Specify absolute path with beginning slash
# => /users
Вызывает метод суперкласса
# File actionview/lib/action_view/routing_url_for.rb, line 76
def url_for(options = nil)
  case options
  when String
    options
  when nil, Hash
    options ||= {}
    options = { :only_path => options[:host].nil? }.merge!(options.symbolize_keys)
    super
  when :back
    _back_url
  when Array
    polymorphic_path(options, options.extract_options!)
  else
    polymorphic_path(options)
  end
end

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

Spec-Zone.ru

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