1

有没有办法在 padrino 控制器中确定路线名称是什么?例如,在前块中,我希望能够根据路线采取一些预定的行动。所以,像这样:

before do
  check_authorization_for(:route_name)
end

其中 ":route_name" 类似于 "update" 或 "delete" 或 "create" 之类的。就像现在一样,我只有代码来检查当前用户是否有权在每个控制器方法的开头执行请求的操作。我们的授权方案依赖于我们的数据库中的信息,并且这些权限是在控制器操作上键入的,所以如果有办法确定控制器中的路由名称(即,如果我可以确定正在调用“更新”操作),我可以只用一个块来测试授权,而不必在每个操作中进行检查。

我确信一定有一种非常简单的方法可以做到这一点,但我似乎找不到任何关于它的文档。提前感谢您的帮助。

4

1 回答 1

4

尝试

before :show, :edit, :destroy do
    Post.find(params[:id])
end

或者,如果您更喜欢直接访问路由对象:

request.route_obj

IE

request.route_obj.controller

如果你想混合当前路径,有一些类似于current_page在 rails 中的东西。

# http://localhost:3000/category/1/products/page/3
current_path('page' => 4) # => http://localhost:3000/category/1/products/page/4
于 2012-06-20T13:35:02.593 回答