2009-04-24 33 views
1

我的應用程序目前有一個非常簡單的URL佈局:URL佈局

map.resource :account, :controller => "users", :only => [:show, :update, :destroy] 
map.resources :workouts do |workout| 
    workout.resource :chart, :only => [:show] 
    workout.resources :taggings, :only => [:destroy, :create] 
end 

給予我好輕鬆的URL爲當前用戶。 我現在添加一些公共功能 - 公衆可以看到項目的能力。我想預先登錄這些網址的用戶登錄名。同時,除了一個鍛鍊資源之外,公共用戶不需要訪問任何東西。我不確定最好的方式來做到這一點。我想風與看起來像網址:

/teich/workouts/3454 

這大概是

/:user_login/workouts/:id 

難道我path_prepend?對於那些想要完整的RESTful控件的當前用戶來說,最好的做法是繼續使用他們的用戶名,而不是像我現在那樣使用直接的URL?難道我不擔心所有額外的路由與path_prepend因爲我會:before許可檢查嗎?

回答

1

可能最簡單的方法是在User模型中覆蓋to_param

def to_param 
    "#{id}-#{login}" 
    end 

Rails在爲模型生成路徑時使用此方法。然後,當發現字符串發送to_i將抓住整數。

不要忘了你還需要轉義無效的url字符。

+0

謝謝本。這不是我正在尋找的解決方案。如果我有一個正常的寧靜路線'/ users /:id /'我知道我可以使用to_param將其更改爲登錄。但是這裏有一些差異,主要是,我不希望/用戶在一開始。 – teich 2009-04-24 19:28:13