Ruby on rails Rails:覆盖RESTful路径?

Ruby on rails Rails:覆盖RESTful路径?,ruby-on-rails,rest,routes,Ruby On Rails,Rest,Routes,是否可以覆盖RESTful路径 例如,我有photo\u路径(photo),它将生成/photos/12345 但是我希望所有使用photo\u path的方法都能实际生成URL,比如/photos/joeschmoe/12345(这是照片的用户和照片id) 显然,我可以创建一个新的路由,但我想确保没有一种更为RESTful的方式来创建它。您可以将照片作为用户的子资源,这样您就有了users/joeschmoe/photos/12345(当然,在这里,您的用户控制器需要能够接受用户名而不是id,

是否可以覆盖RESTful路径

例如,我有
photo\u路径(photo)
,它将生成
/photos/12345

但是我希望所有使用
photo\u path
的方法都能实际生成URL,比如
/photos/joeschmoe/12345
(这是照片的用户和照片id)


显然,我可以创建一个新的路由,但我想确保没有一种更为RESTful的方式来创建它。

您可以将照片作为用户的子资源,这样您就有了
users/joeschmoe/photos/12345
(当然,在这里,您的用户控制器需要能够接受用户名而不是id,这是另一个需要解决但并不困难的路由问题)

然后你的控制器可能会打电话

@photos = Photo.find_by_username(params[:id])
尽管我认为有一些不太老套的方法可以做到这一点

您还可以添加
joeschmoe
作为查询字符串参数

或者,您可以将username作为路由中的可选参数,因此它类似于

match "/photos(/:username)/:id" => "photos#show"
或者,如果需要新的命名路由:

match "/photos/:username/:id" => "photos#show_by_user", :as => :user_photo
match "/photos/:username/:id" => "photos#show_by_user", :as => :user_photo