2
是否可以重寫一個RESTful路徑?Rails:覆蓋RESTful路徑?
舉例來說,我有photo_path(photo)
這將產生/photos/12345
,但我想爲photo_path
所有使用實際生成的URL像/photos/joeschmoe/12345
(這是照片的用戶和照片的身份證件)。
很明顯,我可以創建一個新的路線,但要確保沒有更多的REST風格的做法。
是否可以重寫一個RESTful路徑?Rails:覆蓋RESTful路徑?
舉例來說,我有photo_path(photo)
這將產生/photos/12345
,但我想爲photo_path
所有使用實際生成的URL像/photos/joeschmoe/12345
(這是照片的用戶和照片的身份證件)。
很明顯,我可以創建一個新的路線,但要確保沒有更多的REST風格的做法。
你可以讓照片成爲用戶的一個子資源,所以你會有users/joeschmoe/photos/12345
(當然,在這裏,你的用戶控制器需要接受用戶名而不是id的能力,這是解決另一個路由問題,但不難)
resources :users do
resources :photos
end
然後控制器也許可以稱之爲
@photos = Photo.find_by_username(params[:id])
雖然我認爲有這樣做的少哈克的方式。
您還可以將joeschmoe
作爲查詢字符串參數添加。
或者你可以使用戶名在路由的可選參數,所以它會像
match "/photos(/:username)/:id" => "photos#show"
或者,如果你想有一個新的命名路線:
match "/photos/:username/:id" => "photos#show_by_user", :as => :user_photo