ID 용 슬러그를 사용하므로/artists/radiohead/songs/karma-police 대신/songs/radiohead/karma-police와 같은 URL을 원합니다.중첩 된 리소스 경로에서 두 번째 모델 이름 삭제
굼벵이는 달성 할 수 있습니다
def to_param
slug
end
하지만 어떻게 모델 이름 드롭 할 수있는 방법이있다 - 표준의 RESTful URL에서 - "노래는?"
ID 용 슬러그를 사용하므로/artists/radiohead/songs/karma-police 대신/songs/radiohead/karma-police와 같은 URL을 원합니다.중첩 된 리소스 경로에서 두 번째 모델 이름 삭제
굼벵이는 달성 할 수 있습니다
def to_param
slug
end
하지만 어떻게 모델 이름 드롭 할 수있는 방법이있다 - 표준의 RESTful URL에서 - "노래는?"
을 확인하십시오.
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"}
[레일 자원 라우팅의 기본 세그먼트 이름] (의
실제로 더 나은 것 :). 감사. 다른 누군가가 궁금해하는 경우, 여기에있는 경로 선언은 중첩되지 않습니다. 이것을 별도의 경로로 선언하십시오. – mahemoff
이것을 routes.rb
에 넣으면 제대로 작동합니다. 당신이 :as
을 할 경우
match 'artists/:artist_id/:id' => 'songs#show', :as => 'artist_song'
는 다른 경로가이 일에 우선하지 않도록해야합니다.
그런 다음 당신은 당신의 resources
통화에 :path
옵션을 전달하여 경로 세그먼트를 대체 할 수 있습니다이 Routing match
reference
가능한 중복 http://stackoverflow.com/questions/182040/default-segment-name-in -rails-resources-routing) – edgerunner
검색 할 때 그것을 보지 못했지만 이름을 유지하고 두 번째를 삭제하는 것과 충분히 다른 것으로 생각합니다. 반면 그 질문은 반대입니다. 중첩 된 라우팅은 까다로운 일이므로 별도의 질문을 유용한 리소스로 만드는 데는 별개의 문제입니다. 차이점을 반영하여 제목을 업데이트하겠습니다. – mahemoff
Rails 3.1에서이 기능을 확인했습니다. 질문 : 자원, 노래, : 경로 => ''로 대답 할 수 있다면 받아 들일 것입니다. – mahemoff