我正在使用网站棱镜来创建一个可能有2个网址的网页对象。 Site_prism使用Addressable :: Template,它使用URI模板RFC 6570。
所需页面包含元素列表,但也可以没有,并且从这个逻辑2中定义了可能的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")}
具有默认值的变量,或仅与定义的变量一起出现的路径。
提前致谢。
答案 0 :(得分:0)
SitePrism已对可寻址模板进行了很多更新,但是所有这些都已发布之后,您要进行发布。
您是否尝试过使用site_prism和addressable的更高版本(site_prism在2.12之后,addressable在2.5之后)。
如果不能,请在Github上打开缺陷/功能请求,因为这听起来像是我们“应该”支持的事情。 https://github.com/natritmeyer/site_prism/issues