класс ActionView::FileSystemResolver
Резолвер, загружающий файлы из файловой системы. Он позволяет задавать собственный шаблон разрешения. Такой шаблон может быть строкой шаблона совпадения, поддерживаемой некоторыми переменными.
Примеры
Шаблон по умолчанию загружает представления так же, как и предыдущие версии Rails, например, когда вы ищете `users/new`, он сгенерирует шаблон поиска: `users/new{.{en},}{.{html,js},}{.{erb,haml},}`
FileSystemResolver.new("/path/to/views", ":prefix/:action{.:locale,}{.:formats,}{.: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,}{.:handlers,}")
Если вы не укажете шаблон, будет использован шаблон по умолчанию.
Для использования любого из настраиваемых резолверов выше в приложении Rails, вам нужно просто настроить ActionController::Base.view_paths в файле инициализации, например:
ActionController::Base.view_paths = FileSystemResolver.new(
Rails.root.join("app/views"),
":prefix{/:locale}/:action{.:formats,}{.:handlers,}"
)
Формат шаблона и переменные
Шаблон должен быть корректной строкой шаблона совпадения, и он позволяет использовать следующие переменные:
-
:prefix- обычно путь к контроллеру -
:action- имя действия -
:locale- возможные версии локалей -
:formats- возможные форматы запроса (например, html, json, xml…) -
:handlers- возможные обработчики (например, erb, haml, builder…)
Публичные методы класса
# File actionview/lib/action_view/template/resolver.rb, line 322 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 333 def eql?(resolver) self.class.equal?(resolver.class) && to_path == resolver.to_path end
# File actionview/lib/action_view/template/resolver.rb, line 328 def to_s @path.to_s end
© 2004–2016 David Heinemeier Hansson
Licensed under the MIT License.