我的网站网址有问题。我有 2 条路线用于相同的操作,原始的路线和重写的 url:
get '/page/:id' => 'page#view'
get '/:username/:rewritten_url' => 'page#view'
一切正常,除非我尝试从重写的页面生成原始 url。例子 :
我有 2 页:一个带有重写的 url,第二个没有(我没有重写的 url)。
page_id : 1
rewritten_url : /my-super-page
page_id : 2
rewritten_url : nil
我的问题是当我尝试使用 url_for 方法从第 1 页生成指向第 2 页的链接时。
如果我在第 1 页上使用重写的 url,它就不起作用。url_for 为我生成以下原始 url:/my-super-page?id=2(而不是 /page/2)
如果我在带有原始网址的第 1 页上,它就可以工作。
此外,如果我尝试从原始页面或重写页面生成重写链接,它也可以工作。
编辑
这是一个失败的 url_for 调用(我能做到的最简单的方法):
url_for(controller: 'page', action: 'view', id: '3423423423')
# returns /my-super-page?id=3423423423
通常,我有一个 url_for 方法的覆盖,但我禁用了它来解决这个问题。