如果我有以下西纳特拉代码:
get '/hi' do
erb :hello
end
如果我有一个名为这个伟大的工程views/hello.erb
。 但是,如果我有一个名为views/hello.html.erb
西纳特拉无法找到该文件,并给我一个错误。 我如何告诉辛纳屈我希望它看起来对.html.erb
为有效.erb延期?
如果我有以下西纳特拉代码:
get '/hi' do
erb :hello
end
如果我有一个名为这个伟大的工程views/hello.erb
。 但是,如果我有一个名为views/hello.html.erb
西纳特拉无法找到该文件,并给我一个错误。 我如何告诉辛纳屈我希望它看起来对.html.erb
为有效.erb延期?
西纳特拉使用倾斜来呈现它的模板,并扩展与他们相关联。 所有你需要做的就是告诉倾斜它应该使用ERB来呈现扩展:
Tilt.register Tilt::ERBTemplate, 'html.erb'
get '/hi' do
erb :hello
end
编辑回答后续问题。 有没有#unregister
和还指出,西纳特拉会喜欢hello.erb超过hello.html.erb。 周围的偏好问题的办法是要么重写erb
方法或使自己的渲染方法:
Tilt.register Tilt::ERBTemplate, 'html.erb'
def herb(template, options={}, locals={})
render "html.erb", template, options, locals
end
get '/hi' do
herb :hello
end
这将倾向于hello.html.erb,但仍然会依傍hello.erb,如果它不能找到hello.html.erb。 如果你真的想阻止.erb文件从在任何情况下,你可以,我想,子类ERBTemplate被发现并登记,对.html.erb代替,但坦率地说,只是听起来不值得。
这应该做
get '/hi' do
erb :'hello.html'
end
或可替代
get '/hi' do
erb 'hello.html'.to_sym
end