Я закончил создание игрушечного приложения, чтобы лучше изучить Rails, но я не удовлетворен своей текущей реализацией маршрутов. Я хотел бы DRY их, но я не уверен, как это сделать, поскольку документы Rails охватывают только маршруты REST с ресурсами. Вот мой routes.rb
:Как я могу реорганизовать маршруты RESTless?
root 'index#home'
# Avatars
get '/:user/change_avatar' => 'avatars#edit', as: :change_avatar
post '/:user/change_avatar' => 'avatars#update', as: :update_avatar
# Users
get '/:user' => 'users#show', as: :show_user
get '/:user/edit' => 'users#edit', as: :edit_user
delete '/:user' => 'users#destroy', as: :destroy_user
# Playlists
post '/:user/playlists' => 'playlists#create', as: :playlists
get '/:user/:playlist' => 'playlists#show', as: :show_playlist
get '/:user/:playlist/edit' => 'playlists#edit', as: :edit_playlist
patch '/:user/:playlist' => 'playlists#update', as: :update_playlist
delete '/:user/:playlist' => 'playlists#destroy', as: :destroy_playlist
# Tracks
post '/:user/:playlist/tracks' => 'tracks#create', as: :tracks
get '/:user/:playlist/:track' => 'tracks#show', as: :show_track
get '/:user/:playlist/:track/edit' => 'tracks#edit', as: :edit_track
patch '/:user/:playlist/:track' => 'tracks#update', as: :update_track
delete '/:user/:playlist/:track' => 'tracks#destroy', as: :destroy_track
# Photos
delete '/:user/:playlist/:track/photos/:id' => 'photos#destroy', as: :destroy_photo
Как можно заметить, что :user
, :playlist
и :track
динамические сегменты появляются практически во всех маршрутов. Как я могу улучшить это?
Использование прицелы может быть полезным – Kiloreux
гляньте https: //www.airpair. com/ruby-on-rails/posts/building-a-restful-api-in-a-rails-application – Kiloreux
Спасибо за подсказку. Очень полезно. Вы можете взглянуть на мой ответ ниже, чтобы посмотреть, чем я оказался. – Duos