класс ActionView::FileSystemResolver
Решатель, загружающий файлы из файловой системы. Позволяет задать собственный шаблон разрешения. Такой шаблон может быть строкой 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…)
Публичные методы класса
# 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
Публичные методы экземпляра
# File actionview/lib/action_view/template/resolver.rb, line 356 def eql?(resolver) self.class.equal?(resolver.class) && to_path == resolver.to_path end
# File actionview/lib/action_view/template/resolver.rb, line 351 def to_s @path.to_s end
© 2004–2018 David Heinemeier Hansson
Licensed under the MIT License.