我有 2 条通配符路线,如下所示:
get '*country_path/', to: 'country#list', constraints: { country_path: /\/$/ }
get '*country_path/:title', to: 'country#show'
当 url 结尾有斜杠时,应调用country#list。例子:
www.example.com/usa/california/
www.example.com/usa/california/abc/
当 Country#show 没有尾部斜杠时,应该调用它。例子:
www.example.com/usa/californa/travel
www.example.com/usa/californa/average-income
目前我的约束似乎不起作用,因为所有请求都发送到国家/地区#list。
我的路线限制出了什么问题?
您应该问自己这是否真的是完成您想要做的事情的最佳方式。一般来说,网站不关心目录中的尾部斜杠。例如:
www.facebook.com/username
将带您到以下相同地点:
www.facebook.com/username/
绝大多数网站都是这样工作的,所以你现在要做的就是违反网络惯例。如果你关心的话,它肯定会对搜索引擎优化产生影响。即使你不这样做,你也应该考虑一下在测试这些路线时你将面临的困难。您的测试将很脆弱,从长远来看这会导致很多挫败感。
我的建议是这样的:如果你想区分list
and show
,将它们放入 URL 中。例如:
www.example.com/usa/california/list
www.example.com/usa/california/abc/list
可以将用户带到country#list
,以“california”和“abc”作为参数。相似地:
www.example.com/usa/californa/travel/show
www.example.com/usa/californa/average-income/show
可以将用户带到country#show
。这明显更容易做到。它也更加标准和用户友好。有关更多信息,请参阅导轨从外向内布线。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)