Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Sinatra Sub-Directory Views

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?

like image 520
Ethan Turkeltaub Avatar asked Jan 25 '10 00:01

Ethan Turkeltaub


2 Answers

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?).

like image 152
Alex Reisner Avatar answered Oct 20 '22 23:10

Alex Reisner


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.

like image 42
Franklin Yu Avatar answered Oct 21 '22 01:10

Franklin Yu