我在写一些sinatra代码时遇到了一个问题,我有以下代码块
begin
# do stuff here
rescue SomeException::Class => ex
flash.now[:err] = "some error " + ex.message
ensure
erb :content, :layout => :mainlayout
end
我遇到的问题是erb输出只是部分渲染,mainlayout.erb被渲染,但是,content.erb没有被包含。我在应用程序的其他部分使用了相同的erb行,它们工作正常。
以下实际上是有效的,是我正在使用的解决方法
begin
# do stuff here
erb :content, :layout => :mainlayout
rescue SomeException::Class => ex
flash.now[:err] = "some error " + ex.message
erb :content, :layout => :mainlayout
end
有什么想法可以解决为什么在确定时没有完成?我想用它作为它更优雅。
答案 0 :(得分:1)
尝试使用return erb :content, :layout => :mainlayout
在此处详细了解ensure
- http://blog.leshill.org/blog/2009/11/17/ensure-with-explicit-return.html