2016-10-31 4 views
0

Ich habe zwei Modelle Blog und User mit folgenden VereinigungRails Verbände Routing

Blog belongs_to :user 

Meine Routen sind als

resources :users, shallow: true do 
    resources :blogs 
end 

die Routen

user_blogs GET /users/:user_id/blogs(.:format)  blogs#index 
       POST /users/:user_id/blogs(.:format)  blogs#create 
new_user_blog GET /users/:user_id/blogs/new(.:format) blogs#new 
    edit_blog GET /blogs/:id/edit(.:format)   blogs#edit 
     blog GET /blogs/:id(.:format)    blogs#show 

Die Frage erzeugen Diese sind folgendermaßen deshalb einige Routen (zum Beispiel) haben die richtige Routing, aber andere (edit_blog sollte edit_user_blog sein) sind falsch?

+0

Sie auch 'Ressourcen erzeugt: blogs' außerhalb der verschachtelten': Benutzer 'Ressourcen? –

+3

Es ist weil Sie flaches Routing angefordert haben, ist es nicht falsch. Das passiert mit flachem Routing –

Antwort

2

Sie erhalten diese Routen wegen shallow-nesting

flache Verschachtelung erzeugt nur verschachtelte Routen für index, create und new

Gemäß der Dokumentation seicht Option entspricht Routen zu erzeugen wie unten:

resources :users do 
    resources :blogs, only: [:index, :new, :create] 
end 
resources :blogs, only: [:show, :edit, :update, :destroy] 

Welche wird

user_blogs GET /users/:user_id/blogs(.:format)  blogs#index 
       POST /users/:user_id/blogs(.:format)  blogs#create 
new_user_blog GET /users/:user_id/blogs/new(.:format) blogs#new 
    edit_blog GET /blogs/:id/edit(.:format)   blogs#edit 
      blog GET /blogs/:id(.:format)     blogs#show 
       PATCH /blogs/:id(.:format)     blogs#update 
       PUT /blogs/:id(.:format)     blogs#update 
       DELETE /blogs/:id(.:format)     blogs#destroy 
     users GET /users(.:format)      users#index 
       POST /users(.:format)      users#create 
     new_user GET /users/new(.:format)     users#new 
    edit_user GET /users/:id/edit(.:format)   users#edit 
      user GET /users/:id(.:format)     users#show 
       PATCH /users/:id(.:format)     users#update 
       PUT /users/:id(.:format)     users#update 
       DELETE /users/:id(.:format)     users#destroy 

während mit shallow Option erzeugen Sie haben genau die gleichen Routen wie oben