我喜欢友好的id宝石但我看到的一个问题是当我输入带有国会大厦字母的网址时,例如/ users / Joe-Blogs它无法找到该页面。它有点琐碎,但大多数网站可以处理这样的事情,并将生成页面,无论它是否有国会大厦的信。有谁知道解决这个问题?
编辑:澄清这是为了当用户手动输入网址并将大写字母放入其中时,因为它的名称类似于作者/ Joe-Blogs。我已经看到其他网站处理这个问题但是rails似乎只给出了404。
答案 0 :(得分:4)
friendly_id
使用parameterize
来创建slu ..
我认为解决问题的最佳方法是在使用它之前参数化参数。
# controller
User.find(params[:id].parameterize)
或参数化链接源自的网址。
答案 1 :(得分:1)
作为Vic
答案的补充,您需要查看url normalization
:
RFC 3986中描述了以下规范化,以产生等效的网址:
将方案和主机转换为小写。
URL的方案和主机组件不区分大小写。大多数规范化器会将它们转换为小写。
简而言之 - 在您的网址中使用大写字母违反惯例。
您可能还希望看URI normalize
;更重要的是,您应该努力从网址中删除大写:
URI.parse(params[:id]).normalize