Erb模板在使用时不会呈现,以确保异常处理

时间:2011-06-03 14:43:43

标签: ruby exception-handling sinatra erb

我在写一些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 

有什么想法可以解决为什么在确定时没有完成?我想用它作为它更优雅。

1 个答案:

答案 0 :(得分:1)

尝试使用return erb :content, :layout => :mainlayout在此处详细了解ensure - http://blog.leshill.org/blog/2009/11/17/ensure-with-explicit-return.html