我想在Sinatra实施这条特定路线:
post '/activate/:model/:id/?' do
model.activate stuff
基本上这里发生的是我使用Module.const_get
获取模型名称。然后我在对象上调用activate
方法。现在我想添加一个停用方法,我可以复制代码,只是将其修改为停用,但它不是很干净。我应该使用正则表达式,对吧?我如何“动态调用方法”(也称根据路由调用停用或激活?
答案 0 :(得分:0)
一种方法是使用帮助器和对象send
方法。
module Sinatra
module ActivateDiactivate
def activate_diactivate(route)
activ_deactiv = route.split("/")
post route do
model = Module.const_get(activ_deactiv[1].to_sym)
model.send(method, stuff)
end
end
end
register AcivateDiactivate
end
activate_diactivate '/activate/:model/:id/?'
activate_diactivate '/diactivate/:model/:id/?'