【问题标题】:How to have URI template with optional variable with path如何使用带有路径的可选变量的 URI 模板
【发布时间】: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


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2012-01-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多