2010-09-19 65 views
2

我有一個User類和map.resources:我的路由中的用戶。Rails:如何爲特定對象創建默認路由

如果創建一個鏈路

link_to @user.name, @user 

它會以某種方式自動建立到/用戶/ 3的鏈路,其中圖3是用戶的ID。 如果我想創建更多用戶友好鏈接,並且不是通過用戶名而是通過用戶名識別用戶,該怎麼辦?所以路徑看起來像/ users/some_user_name。我如何重新分配@user的默認鏈接,以便我不需要更改所有模板?

回答

2

您可以使用FriendlyId寶石。這正是你想要的。例如,如果你想鏈接看起來像/users/username

class User < ActiveRecord::Base 
    has_friendly_id :username 
end 
+0

由於這是一個很好的解決方案,但我需要改變它僅適用於「作秀」行爲。其餘的操作應該繼續使用正常的ID。否則,我將不得不改變很多模板,有時我使用@ user.id而不是@user – Arty 2010-09-19 03:22:39

+0

我相信應該有一種方法來爲@user – Arty 2010-09-19 03:23:06

+0

重新分配默認路由。只需要爲'使用'map.show_user'users /:username',:controller =>「users」,:action =>「show」'顯示'行爲,並用'except'從REST路由中排除它,但這是一個額外的麻煩。 FriendlyId是更好的做法。只有你必須做的你應該禁止用戶註冊用戶名,比如你的動作名稱,例如'new'。順便問一下,我很好奇你爲什麼要在其他操作中保留'id'?只是有趣。 – Voldy 2010-09-19 06:44:24

0

找到它。

在User.rb:

​​