有没有办法在padrino控制器中确定路由名称是什么?例如,在之前的一个块中,我希望能够根据路线采取一些预定的动作。所以,像这样:
before do
check_authorization_for(:route_name)
end
其中“:route_name”类似于“更新”或“删除”或“创建”等等。就像现在一样,我只有代码来检查当前用户是否有权在每个控制器方法的开头执行请求的操作。我们的授权方案依赖于我们的数据库中的信息,并且这些权限是在控制器操作上键入的,因此如果有办法确定控制器中的路由名称(即,我是否可以确定正在调用“更新”操作) ),我可以只用一个块来测试授权,而不必在每个动作中进行检查。
我确信必须有一个非常简单的方法来做到这一点,但我似乎无法找到任何文件。在此先感谢您的帮助。
答案 0 :(得分:4)
尝试
before :show, :edit, :destroy do
Post.find(params[:id])
end
或者如果您更喜欢直接访问路径对象:
request.route_obj
即
request.route_obj.controller
如果要混合当前路径,则会在rails中显示与current_page
类似的内容。
# http://localhost:3000/category/1/products/page/3
current_path('page' => 4) # => http://localhost:3000/category/1/products/page/4