2012-05-21 127 views
2

Github如何設法獲得用於表示用戶回購的友好URL?對於名爲abc的用戶名爲foo的項目,他們如何解決URL:http://github.com/foo/abc。他們是否從URL中的標題獲取DB的abc模型(這聽起來不合理,因爲它們正在修改標題)。他們如何轉讓他們可以在視圖中獲取並顯示的abc回購的唯一ID?Github中的友好網址

我問的原因是我面臨類似的問題,即創建友好的URL來查看資源。 MongoDB的對象ID非常長,使URL看起來很可怕。有沒有解決方法?所有這一切表明CRUD(或REST)的網址爲資源教程總是包含對象的唯一ID(如http://mysite.org/post/1http://mysite.org/post/1/edit。有沒有更好的辦法做到這一點?

回答

0

我嘲笑像這樣使用FriendlyID和Nested Resources的結構。

本質上,使用友好的ID來獲得to_param -ish slugs在你的路線,然後設置嵌套資源。使用GitHub上作爲例子:

的routes.rb

resources :users do 
    resources :repositories 
end 

然後在你的控制器,比方說,對資料庫,您可以檢查params[:user_id]存在,並用它來確定從路由的用戶。我檢查了存在的理由是因爲我不喜歡的東西(大約):

/myrepositories/:repository_id 
/:user_id/:repository_id 

所以我的控制器就:

def show 
    @user = params[:user_id] ? User.find(params[:user_id]) : current_user 
end 

我跟着這個教程here開始使用此相同的項目。

4

由於沒有看到他們的代碼,我不知道你究竟他們是如何做到這一點,但如果你用Rails有至少兩個紅寶石寶石會給你類似的結果:

Slugged看一看,friendly_id

+0

Github上使用Rails的那麼容易做類似的事情。 – Turnkey

1

http://github.com/foo/abc是一個獨特的庫標識(對於那個回購的主分支)我假設他們有一張桌子,看起來像這樣:

repository-id | user-id | project-id 

並且只是基於用戶和項目而不是倉庫標識查找。

你需要在內部和用戶友好的ID之間做一些特定領域的映射,但是你需要確保它是1:1的映射。