6
在我的Rails應用程序中,我目前有一批用戶,每個用戶都有一個註冊用戶標識。在url欄中隱藏用戶標識
如果我進入我的用戶索引並單擊用戶顯示頁面,我會看到以下示例標題。
本地主機:3000 /用戶/ 3
現在,我不喜歡這個,因爲它很容易讓人們通過在標題用戶跳過。
我該如何去做以下事情,以便它顯示user.username字段,例如
本地主機:3000 /用戶/ adamwest
在我的Rails應用程序中,我目前有一批用戶,每個用戶都有一個註冊用戶標識。在url欄中隱藏用戶標識
如果我進入我的用戶索引並單擊用戶顯示頁面,我會看到以下示例標題。
本地主機:3000 /用戶/ 3
現在,我不喜歡這個,因爲它很容易讓人們通過在標題用戶跳過。
我該如何去做以下事情,以便它顯示user.username字段,例如
本地主機:3000 /用戶/ adamwest
您可以定義用戶模型to_param
方法。
class User
...
def to_param
name
end
...
end
然後每隔生成的URL將具有name
代替id
作爲用戶標識符。
sid = User.new :name => 'sid'
user_path(sid) #=> "https://stackoverflow.com/users/sid"
當然,在控制器中,您必須按名稱查找用戶。
class UsersController
...
def show
@user = User.find_by_name(params[:id])
end
...
end
我也建議你看看friendly_id寶石。
FriendlyId是「Swiss Army推土機」的重擊和永久鏈接 ActiveRecord的插件。它允許你創建漂亮的URL,並且使用人性化的字符串工作,就好像它們是 ActiveRecord模型的數字ID一樣。
謝謝你的工作,很好。我已經把它設置爲現在的基本,但會檢查出這個friendly_id寶石,以創建一個更友好的網站。謝謝。 – user1222136 2012-03-08 19:17:11
如果'User#name'可以包含一個句點,那麼你需要在路徑上使用':constraints => {:name => /.*/}'來防止Rails在句點之後解釋這些東西,格式。 – 2012-03-08 19:18:22