ruby - 我怎样才能给 Sinatra 一个包罗万象的默认路由?

标签 ruby sinatra

对于小型开发人员文档应用,我想设置一个 Sinatra 应用来仅提供 HAML 文件。在 CSS 文件和图像的路由之后,我想要一个尝试为您请求的任何路径加载 HAML 文件的路由。

例如:

  • /index 加载 views/index.haml,如果它存在的话
  • /this/page/might/exist 加载views/this/page/might/exist.haml,如果存在的话

我将如何指定这条路线?

最佳答案

看起来像这样做:

get '/*' do
  viewname = params[:splat].first   # eg "some/path/here"

  if File.exist?("views/#{viewname}.haml")
    haml :"#{viewname}"

  else
    "Nopers, I can't find it."
  end
end

关于ruby - 我怎样才能给 Sinatra 一个包罗万象的默认路由?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10806024/

相关文章:

ruby - 在 ruby​​ 中将 .json 转换为 .csv

ruby - 无法在 Sinatra 中使用默认过程转储哈希

devise - 未定义方法failure_app,为nil :NilClass

ruby - DataMapper 日期时间条件

Ruby 哈希白名单过滤器

ruby-on-rails - Neo4j.rb : as_json how to ignore root?

ruby-on-rails - 我怎么知道 Rails 已经加载/缓存了一个 Activerecord 类属性?

ruby - Ruby 中的 "#@{var}"和 "@#{var}"有什么区别?

ruby-on-rails - Ruby 功能开关/功能脚蹼

ruby - Cucumber/Capybara 重定向后返回 'Not Found' 页面