friendly-id gem可以在url中使用大写字母,例如/ users / joe-blogs和/ users / Joe-Blogs都有效

时间:2015-12-30 08:34:14

标签: ruby-on-rails ruby-on-rails-4 friendly-id

我喜欢友好的id宝石但我看到的一个问题是当我输入带有国会大厦字母的网址时,例如/ users / Joe-Blogs它无法找到该页面。它有点琐碎,但大多数网站可以处理这样的事情,并将生成页面,无论它是否有国会大厦的信。有谁知道解决这个问题?

编辑:澄清这是为了当用户手动输入网址并将大写字母放入其中时,因为它的名称类似于作者/ Joe-Blogs。我已经看到其他网站处理这个问题但是rails似乎只给出了404。

2 个答案:

答案 0 :(得分:4)

friendly_id使用parameterize来创建slu ..

我认为解决问题的最佳方法是在使用它之前参数化参数。

# controller
User.find(params[:id].parameterize)

或参数化链接源自的网址。

答案 1 :(得分:1)

作为Vic答案的补充,您需要查看url normalization

  

RFC 3986中描述了以下规范化,以产生等效的网址:

     

将方案和主机转换为小写。

     

URL的方案和主机组件不区分大小写。大多数规范化器会将它们转换为小写。

     

示例:→http://www.example.com/

简而言之 - 在您的网址中使用大写字母违反惯例。

您可能还希望看URI normalize;更重要的是,您应该努力从网址中删除大写:

URI.parse(params[:id]).normalize