The multi_view plugin makes it easy to render multiple views, where the view template is the same as the matched element. It adds an
r.multi_view method, which takes an argument that is passed to
r.get, and should capture a single argument, which is treated as the template name to pass to
view. This makes it possible to pass in an array of strings, or a regexp with a single capture.
The advantage of using a regexp over an array of strings is that the regexp is generally faster and uses less memory. However, constructing the regexps is more cumbersome. To make it easier, the multi_view plugin also offers a
multi_view_compile class method that will take an array of view template names and construct a regexp that can be passed to
The hash_routes plugin offers a views method that is similar to and performs better than the
r.multi_view method, and it is recommended to consider using that instead of this plugin.
plugin :multi_view route do |r| r.multi_view(['foo', 'bar', 'baz']) end # or: route do |r| r.multi_view(/(foo|bar|baz)/) end # or: regexp = multi_view_compile(['foo', 'bar', 'baz']) route do |r| r.multi_view(regexp) end # all are equivalent to: route do |r| r.get 'foo' do view('foo') end r.get 'bar' do view('bar') end r.get 'baz' do view('baz') end end
Classes and Modules
Public Class methods
Depend on the render plugin, since this plugin only makes sense when the render plugin is used.
# File lib/roda/plugins/multi_view.rb 62 def self.load_dependencies(app) 63 app.plugin :render 64 end