【发布时间】:2011-09-07 21:14:44
【问题描述】:
我在编写一些 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
任何想法为什么在确保时没有完成?我想用它更优雅。
【问题讨论】:
-
尝试使用 return erb :content, :layout => :mainlayout 在此处阅读更多关于
ensure的信息 - blog.leshill.org/blog/2009/11/17/… -
@mu 太短 - 正如我在原始帖子中所说,erb 正在被调用,因此确保正在工作。问题是 content.erb 没有呈现到 mainlayout.erb 中,因此应该从 content.erb 生成的所有 html 都丢失了,但 mainlayout.erb 中的 html 没有。它真的很令人困惑,因为相同的 erb 线在确保之外也能正常工作。有些东西阻止了部分租用。
-
@nash 我会尝试并报告
-
@nash 是的,这是它在 erb lib 或类似的东西中发现的第一次返回时一定要解决的问题。如果您想添加正确的答案,我会将其授予最佳答案。谢谢。
标签: ruby exception-handling sinatra erb