Удаление второго имени модели в маршруте вложенных ресурсов - PullRequest
1 голос
/ 08 января 2012

Я использую слагов для идентификаторов, поэтому вместо URL-адресов /artists/radiohead/songs/karma-police.

* 1002 можно использовать URL-адреса, такие как / songs / radiohead / karma-Police **
def to_param
  slug
end

Но как можно удалить название модели - "песни" со стандартного URL RESTful?

Ответы [ 2 ]

1 голос
/ 09 января 2012

Вы можете переопределить сегмент пути, передав опцию :path на ваш resources вызов.

resources :songs, path: "songs/:artist_id"

это сгенерирует эти маршруты

      songs GET    /songs/:artist_id(.:format)          {:action=>"index", :controller=>"songs"}
            POST   /songs/:artist_id(.:format)          {:action=>"create", :controller=>"songs"}
   new_song GET    /songs/:artist_id/new(.:format)      {:action=>"new", :controller=>"songs"}
  edit_song GET    /songs/:artist_id/:id/edit(.:format) {:action=>"edit", :controller=>"songs"}
       song GET    /songs/:artist_id/:id(.:format)      {:action=>"show", :controller=>"songs"}
            PUT    /songs/:artist_id/:id(.:format)      {:action=>"update", :controller=>"songs"}
            DELETE /songs/:artist_id/:id(.:format)      {:action=>"destroy", :controller=>"songs"}
0 голосов
/ 08 января 2012

Поместите это в ваш routes.rb, и оно должно работать.

match 'artists/:artist_id/:id' => 'songs#show', :as => 'artist_song'

Убедитесь, что при выполнении :as другие маршруты не имеют приоритета над этим.

Тогда проверьте это Маршрутизация match ссылка

...