Ruby on rails Rails:覆盖RESTful路径?
是否可以覆盖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,
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