I want to be able to get Sinatra views from sub-directories of ./views (such as ./views/admin). I know you can set the views like so:
set :views, Proc.new { File.join(root, "templates") }
But how would I be able to set this for only part of the file?
I'm not sure exactly what you're asking, but you can render a view in views/admin
by doing this:
erb :"admin/report"
If you're asking how to automatically look in subdirectories of views
when you call erb :report
, I'm not sure how to do that, and I don't think you'd want to (what happens if two views in different dirs have the same name?).
This is supposed to be an oversized comment. The answer provided by Alex is the correct one, but to be sure, this is a quote from official documentation:
One important thing to remember is that you always have to reference templates with symbols, even if they’re in a subdirectory (in this case, use:
:'subdir/template'
or'subdir/template'.to_sym
). You must use a symbol because otherwise rendering methods will render any strings passed to them directly.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With