繼Rails Guide on routing for nested resources,我有兩個模型和我的路線,像這樣:奇怪的Rails路由行爲
# media.rb
class Media < ActiveRecord::Base
has_many :captions, class_name: "Captions", dependent: :destroy
end
# captions.rb
class Captions < ActiveRecord::Base
belongs_to :media
end
# routes.rb
resources :medias do
resources :captions
end
當我運行rake routes | grep captions
我得到以下,這似乎不正確。我的某些行爲不嵌套我希望他們的方式:
media_captions GET /medias/:media_id/captions(.:format) captions#index
POST /medias/:media_id/captions(.:format) captions#create
new_media_caption GET /medias/:media_id/captions/new(.:format) captions#new
edit_captions GET /captions/:id/edit(.:format) captions#edit
captions GET /captions/:id(.:format) captions#show
PUT /captions/:id(.:format) captions#update
DELETE /captions/:id(.:format) captions#destroy
正如你所看到的,index
和create
動作正確嵌套,但其他動作都沒有。任何人都可以解釋爲什麼會發生?
我重命名它,它不會改變任何東西。 – jamesfzhang
沒錯!但我不認爲這就是造成奇怪路由器的原因。無論您是否在控制器中執行操作,Rails都會生成路由。 – Daiku
是的,控制器操作存在。事實上,媒體過去只有一套標題,但現在我正在改變模型,以便能夠有多個標題。所以我認爲從「資源」到「資源」的簡單改變將創建正確的路線。 – jamesfzhang