【发布时间】:2016-09-08 12:59:51
【问题描述】:
TL;DR;
有没有办法获得一个包含资源映射的字符串,就像在 routes.rb 中声明的那样,包括参数名称?例如:
/resource/:id/nested/:nested_id/deep/:deep_id
/resource/:id/nested/:nested_id
/resource/:id
我需要这个字符串并打算手动替换参数,可能使用像 {id: 1, nested_id:2, deep_id: 3} 这样的映射
原因
我有一个集成,我会收到类似的东西:
resource:deep_resource, resource_id:1, extra_args: {id: 1, nested_id:2}
或
resource:nested_resource, resource_id:1, extra_args: {id: 1}
或
resource:first_level_resource, resource_id:1, extra_args: {}
我打算替换 url 中的值并重定向到给定的资源。也许使用从 extra_args 映射到 url 中匹配参数的自动填充。
我不想做很多 if/else 来调用 deep_resource_path(a,b,c) 或 nested_resource_path(a,b) 或 first_level_resource_path(a)
请注意,对于深层资源,我还需要 2 个参数(祖父母 ID 和父母 ID)。对于嵌套资源,我只需要父 ID,对于 first_level 资源,我只需要它自己的 ID。
那么,有可能吗?
谢谢。
ps.:我认为带有 args 的地图是一个更好的选择,然后接收或硬编码 de full url 以重定向每个资源。因此,如果将来 url 发生变化,但保持相同的参数,重定向可以继续工作。
【问题讨论】:
标签: ruby-on-rails ruby routing url-routing