【发布时间】:2017-08-31 15:54:44
【问题描述】:
我正在使用站点棱镜来创建一个可能有 2 个 url 的页面对象。 Site_prism 使用 Addressable::Template,它使用 URI 模板 RFC 6570。
所需的页面包含一个元素列表,但也可以没有,并且根据这个逻辑定义了 2 个可能的 URL。
如果页面没有元素,则 URL 为 example.com/foo
如果页面有元素,它将选择第一个重定向到example.com/foo/1/bar
我正在尝试为页面创建一个 url 模板,以便我可以有两个可能的输出之一。
案例1:Page.new.load => example.com/foo
案例2:Page.new.load(id: 1) => example.com/foo/1/bar
目前我得到的解决方案是:set_url '/foo{/id,path}'Page.new.load(id: 1, path: 'bar')
这适用于案例 1,但不适用于案例 2,因为它需要 2 个变量。
set_url '/foo{/path*}'Page.new.load(path: [1, 'path'])
这同样适用于案例 1,但不适用于案例 2。
我需要的是一个附加了路径的 uri 模板,但前提是该变量存在。
类似:/foo{/id,path("bar")}
具有默认值的变量,或仅与已定义变量一起存在的路径。
提前致谢。
【问题讨论】:
标签: ruby uri site-prism uritemplate addressable-gem