我有一些像这样的线:

/challenges/:challenge_id/submissions/:id
/challenges/:challenge_id/submissions
/api/v1/submissions/:id
/submissions

以“:”开头、以“/”或空行结尾的字符串是Rails路由参数。ie:“challenge\u id”和“:id”
我想用这根线做两件事
将route param变量提取到ruby数组中供以后使用
用“1”替换这些参数变量
所以第一个例子的输出:
arr = [':challenge_id',':id']
new string = '/challenges/1/submissions/1'

我试过了,但它能匹配所有的东西
/[:[a-z*]]/

我在http://rubular.com/中测试,因为我需要在Ruby代码中运行它。

最佳答案

arr = []
"/challenges/:challenge_id/submissions/:id".gsub(/:[^\/]+/){|s| arr.push(s); "1"}
# => "/challenges/1/submissions/1"
arr
# => [":challenge_id", ":id"]

关于ruby - 如何使用Ruby提取路线参数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36916665/

10-11 06:39