我正在寻找方法来干燥我的 Sinatra 应用程序并遇到了一些范围界定问题——特别是,我的处理程序中没有帮助程序和 Sinatra 函数。有人可以告诉我是否有办法修复此代码,更重要的是,发生了什么?
谢谢你。
require 'sinatra'
require 'pp'
helpers do
def h(txt)
"<h1>#{txt}</h1>"
end
end
before do
puts request.path
end
def r(url, get_handler, post_handler = nil)
get(url){ get_handler.call } if get_handler
post(url){ post_handler.call } if post_handler
end
routes_composite_hash = {
'/' => lambda{ h('index page'); pp params }, #can't access h nor params!!!
'/login' => [lambda{'login page'}, lambda{'login processing'}],
'/postonly' => [nil, lambda{'postonly processing'}],
}
routes_composite_hash.each_pair do |k,v|
r(k, *v)
end