【发布时间】:2012-01-04 16:09:05
【问题描述】:
我只是想知道是否有可能有一个条件在完成后将信息传递给请求主体,我怀疑条件可以做到这一点,即使可以做到,也是正确的地方,因为这意味着他们要做条件逻辑,但是授权示例也重定向,因此它有一个模糊的关注点......一个例子是这样的:
set(:get_model) { |body| { send_to_request_body(Model.new(body)) } }
get '/something', :get_model => request.body.data do
return "model called #{@model.name}"
end
以上都是伪代码,对于任何语法/拼写错误,我深表歉意,但我的想法是我可以有一个条件来获取模型并将其放入某个局部变量以供主体使用,或者因错误而停止什么的。
如果可以的话,我确信过滤器(之前/之后)会是一种更好的方法,但是据我所见,我需要为每条路线设置它,而在有条件的情况下,我只需要将其作为请求的一个选项。
之前的例子是:
before '/something' do
@model = Model.new(request.body.data)
end
get '/something' do
return "model called #{@model.name}"
end
这很好,但是假设我现在有 20 条路线,其中 18 条需要创建这些模型,我需要为所有 18 条基本复制之前的过滤器,并为它们编写相同的模型逻辑,这就是为什么我试图找到一种更好的方法来重用这个功能。如果我可以做一个包罗万象的 Before 过滤器,它能够检查给定的路由是否设置了选项,那么这可能会起作用,但不确定你是否可以这样做。
在 ASP MVC 中,您可以使用过滤器来做这种事情,这是我理想的追求,以某种方式配置某些路由(在路由定义中)以预先完成一些工作并将其传递到调用块。
【问题讨论】:
标签: ruby sinatra action-filter