如何使用.html.erb为我的末日景观的文件扩展名?(How do I use .html.erb

2019-07-30 16:47发布

如果我有以下西纳特拉代码:

get '/hi' do
  erb :hello
end

如果我有一个名为这个伟大的工程views/hello.erb 。 但是,如果我有一个名为views/hello.html.erb西纳特拉无法找到该文件,并给我一个错误。 我如何告诉辛纳屈我希望它看起来对.html.erb为有效.erb延期?

Answer 1:

西纳特拉使用倾斜来呈现它的模板,并扩展与他们相关联。 所有你需要做的就是告诉倾斜它应该使用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代替,但坦率地说,只是听起来不值得。



Answer 2:

这应该做

get '/hi' do
  erb :'hello.html'
end

或可替代

get '/hi' do
  erb 'hello.html'.to_sym
end


文章来源: How do I use .html.erb as a file extension for my views with Sinatra?
标签: ruby sinatra erb