Spec-Zone.ru › Ruby on Rails 5.1

класс ActionView::FileSystemResolver

Родитель:
ActionView::PathResolver

Решатель, загружающий файлы из файловой системы. Позволяет задать собственный шаблон разрешения. Такой шаблон может быть строкой glob, поддерживаемой некоторыми переменными.

Примеры

По умолчанию, загружает представления так же, как и предыдущие версии rails, например, при поиске `users/new`, он сгенерирует шаблон поиска: `users/new{.{en},}{.{html,js},}{.{erb,haml},}`

FileSystemResolver.new("/path/to/views", ":prefix/:action{.:locale,}{.:formats,}{+:variants,}{.:handlers,}")

Этот шаблон позволяет хранить файлы с разными форматами в отдельных подкаталогах, например, `users/new.html` будет загружен из `users/html/new.erb` или `users/new.html.erb`, `users/new.js` из `users/js/new.erb` или `users/new.js.erb` и т.д.

FileSystemResolver.new("/path/to/views", ":prefix/{:formats/,}:action{.:locale,}{.:formats,}{+:variants,}{.:handlers,}")

Если вы не укажете шаблон, будет использован шаблон по умолчанию.

Для использования любого из настраиваемых решателей выше в приложении Rails, вам нужно настроить ActionController::Base.view_paths в файле инициализации, например:

ActionController::Base.view_paths = FileSystemResolver.new(
  Rails.root.join("app/views"),
  ":prefix/:action{.:locale,}{.:formats,}{+:variants,}{.:handlers,}",
)

Формат шаблона и переменные

Шаблон должен быть допустимой строкой glob, и он позволяет использовать следующие переменные:

  • :prefix — обычно путь к контроллеру

  • :action — имя действия

  • :locale — возможные версии локалей

  • :formats — возможные форматы запроса (например, html, json, xml…)

  • :variants — возможные варианты запроса (например, phone, tablet…)

  • :handlers — возможные обработчики (например, erb, haml, builder…)

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

new(path, pattern = nil) Показать исходный код
# File actionview/lib/action_view/template/resolver.rb, line 345
def initialize(path, pattern = nil)
  raise ArgumentError, "path already is a Resolver class" if path.is_a?(Resolver)
  super(pattern)
  @path = File.expand_path(path)
end
Вызывает метод суперкласса

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

==(resolver)
Псевдоним для: eql?
eql?(resolver) Показать исходный код
# File actionview/lib/action_view/template/resolver.rb, line 356
def eql?(resolver)
  self.class.equal?(resolver.class) && to_path == resolver.to_path
end
Также псевдоним для: ==
to_path()
Псевдоним для: to_s
to_s() Показать исходный код
# File actionview/lib/action_view/template/resolver.rb, line 351
def to_s
  @path.to_s
end
Также псевдоним для: to_path

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

Spec-Zone.ru

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