2

我正在使用站点棱镜来创建一个可能有 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")}

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

提前致谢。

4

1 回答 1

0

SitePrism 已经对可寻址模板进行了很多更新,但是您在所有这些都进入之后才发布。

您是否尝试过使用更高版本的 site_prism 和可寻址(2.12 之后的 site_prism 和 2.5 之后的可寻址)。

如果不能,您能否在 Github 上提出缺陷/功能请求,因为这听起来像是我们“应该”支持的东西。https://github.com/natritmeyer/site_prism/issues

于 2019-02-22T14:39:55.553 回答