【问题标题】:Erb template not rendering when used with ensure exception handlingErb 模板在与确保异常处理一起使用时不呈现
【发布时间】: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


【解决方案1】:

尝试使用 return erb :content, :layout => :mainlayout 在此处阅读更多关于 ensure 的信息 - http://blog.leshill.org/blog/2009/11/17/ensure-with-explicit-return.html

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-02-15
    • 2016-10-14
    • 1970-01-01
    • 2019-05-20
    • 1970-01-01
    • 1970-01-01
    • 2012-05-26
    • 1970-01-01
    相关资源
    最近更新 更多