如何将带有路径的可选变量的URI模板



我正在使用站点棱镜创建一个可能具有2个URL的页面对象。site_prism使用可寻址::模板,这使用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")}

一个具有默认值的变量,或仅存在具有定义变量的路径。

预先感谢。

siteprism对可寻址模板有了很多更新

您是否尝试过以后版本的site_prism和可寻址的版本(Site_prism 2.12之后,可寻址为2.5)。

如果没有,您可以在github上打开一个缺陷/功能请求,因为这听起来像是我们"应该"支持的东西。https://github.com/natritmeyer/site_prism/issues

最新更新