对于我正在研究的测试助手,我需要在路径的开头中注入一条路径。最后添加它很容易:
test_routes = Proc.new do
get "/#{route_root}/:id", to: "#{route_root}#test"
end
Rails.application.routes.eval_block(test_routes)
问题在于,通常会有"赶上所有"应用程序路由列表末尾的路由,因此我需要将其作为FIRST路由注入。
我一直在使用这种技术:How to dynamically add routes in Rails 3.2
但它的hacky,并且在昨晚的宝石更新后它破了(不知道为什么,但它在routes.clear!
内部破坏)所以我正在寻找一个不太讨厌的解决方案。
答案 0 :(得分:0)
为什么不像这样创建自己的模块:
module DynamicRouter
def self.routes router
router.get "/#{route_root}/:id", to: "#{route_root}#test"
end
end
并在您的routes.rb中调用您的函数:
# in routes.rb
# first line
DynamicRouter::routes(self)
这就是我们如何处理一些自定义宝石。你也可以修补路由器,但它更黑。