如果當前用戶是42,那麼/user/42
和/user
將顯示相同的信息,但/user/23
將顯示23的數據的精簡版公共版本。因此,/user/:id
的處理程序必須知道:id
是當前用戶的特例; /user
的處理程序也必須知道這個特殊情況,因爲它就是這樣。
如果您使用兩條路線,那麼您要麼複製代碼,要麼將實際代碼封裝在額外的層中,要麼執行其他一些繁忙的工作。我只希望他們都發送到同一個控制器方法,並藉助像這樣開始:
user = params['id'] ? User.find(params['id']) : current_user
再後來就你處理的用戶的特殊情況,是當前用戶在一個地方用簡單的東西:
if(user == current_user)
# show the full blob of information
else
# show just the limited public information
end
你可以,當然,切它成一堆的小方法,如show_current_user_info
和show_other_user_info
,控制器內。 /user
的處理程序可能只是致電show_current_user_info
; /user/:id
處理程序可能會調用show_current_user_info
或show_other_user_info
,具體取決於:id
是什麼。這種方法聞起來像對我毫無意義的分層。
/user路徑(第一個)更像編輯而不是show? – theIV 2011-04-03 01:54:48
不是真正的編輯,更多的是查看頁面,但更詳細的版本。 – Spyros 2011-04-03 02:04:36