ruby - 如何检查 Sinatra 中是否存在模板

标签 ruby templates sinatra

在 Sinatra ruby​​ 框架中,我有一个这样的路由:

get '/portfolio/:item' do
  haml params[:item].to_sym
end

如果模板存在(例如,如果我点击 /portfolio/website,并且我有一个名为 /views/website.haml 的模板),这会很好用,但是如果我尝试一个没有模板的 URL,比如 example.com/portfolio/notemplate,我会得到这个错误:

Errno::ENOENT at /portfolio/notemplate
No such file or directory - /.../views/notemplate.haml

如何测试和捕获模板是否存在?我在 Sinatra 文档中找不到“如果模板存在”方法。

最佳答案

不确定是否有特定于 Sinatra 的方法来执行此操作,但您始终可以捕获 Errno::ENOENT 异常,如下所示:

get '/portfolio/:item' do
  begin
    haml params[:item].to_sym
  rescue Errno::ENOENT
    haml :default
  end 
end

关于ruby - 如何检查 Sinatra 中是否存在模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1600473/

相关文章:

ruby - 如何在第一次出现时停止匹配?

ruby - 如何设计和构建使用Actor的程序

ruby - codecademy 在这里错了吗?

c++ - 如何使模板仅通过第一个参数解析类型?

c++ - 使用 constexpr 函数的返回值作为另一个函数的参数

c++ - 在 switch 案例中实现函数调用的其他方式

ruby-on-rails -/usr/bin/env : ruby. exe: 没有那个文件或目录

ruby - 如何获取 Sinatra 应用程序中的所有 URL 参数

ruby - 使用 Sinatra 更改 HTTP 状态消息

ruby - 使用 Datamapper 在 Sinatra 中选择、复选框和单选按钮元素