A resolver that loads files from the filesystem. It allows setting your own resolving pattern. Such pattern can be a glob string supported by some variables.
Examples
Default pattern, loads views the same way as previous versions of rails, eg. when you're looking for `users/new` it will produce query glob: `users/new{.{en},}{.{html,js},}{.{erb,haml},}`
1 | FileSystemResolver. new ( "/path/to/views" , ":prefix/:action{.:locale,}{.:formats,}{.:handlers,}" ) |
This one allows you to keep files with different formats in separate subdirectories, eg. `users/new.html` will be loaded from `users/html/new.erb` or `users/new.html.erb`, `users/new.js` from `users/js/new.erb` or `users/new.js.erb`, etc.
1 | FileSystemResolver. new ( "/path/to/views" , ":prefix/{:formats/,}:action{.:locale,}{.:formats,}{.:handlers,}" ) |
If you don't specify a pattern then the default will be used.
In order to use any of the customized resolvers above in a Rails application, you just need to configure ActionController::Base.view_paths in an initializer, for example:
1 2 3 4 | ActionController::Base.view_paths = FileSystemResolver. new ( Rails.root.join( "app/views" ), ":prefix{/:locale}/:action{.:formats,}{.:handlers,}" ) |
Pattern format and variables
Pattern has to be a valid glob string, and it allows you to use the following variables:
-
:prefix
- usually the controller path -
:action
- name of the action -
:locale
- possible locale versions -
:formats
- possible request formats (for example html, json, xml…) -
:handlers
- possible handlers (for example erb, haml, builder…)