2015-12-30 36 views
1

我喜歡這個友好的id寶石,但是我看到的一個問題是當我在裏面輸入一個帶有大寫字母的URL時/ users/Joe-它找不到頁面的博客。它有點瑣碎,但大多數網站可以處理這樣的事情,並會產生無論是否有大寫字母的頁面。有沒有人知道這個問題的解決辦法?可以在網址中使用大寫字母的friendly-id gem/users/joe-blogs和/ users/Joe-Blogs都可以工作

編輯:澄清這是爲了當用戶手動輸入一個網址,並把它的大寫,因爲它的名字像作家/喬 - 博客。我見過其他網站處理這個,但鐵軌似乎只是給404。

+0

主機名後面的網址區分大小寫,所以大寫字母嚴格的應該不起作用。 – sevenseacat

回答

4

friendly_id使用parameterize來創建slu。。

我認爲解決您的問題的最佳方法是在使用它來查找之前對參數進行參數化。

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

或者參數化鏈接源於的URL。

1

作爲除了Vic的答案,你會想看看url normalization

以下的歸一化的RFC 3986描述導致等效網址:

轉換方案和主持小寫。

URL的方案和主機組件不區分大小寫。大多數規範化器會將它們轉換爲小寫。

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

總之 - 這是對公約在網址中使用大寫字母。

你也不妨看看URI normalize;更重要的是,您應該努力從您的網址中刪除大小寫:

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

我的網址沒有任何大寫字母,但是我有點挑剔,認爲我會看到身份證,這對於最終將URL中的首字母輸入的用戶進行了修復。 (有一個網站有像作者/ joe-sam這樣的網站,有些用戶因爲任何原因手工將資料/作者/ Joe-Sam用大寫字母) – Rob

相關問題