2015-08-29 16 views
5

Rotalarımın isimlendirilmesinde tutarlılık sağlamak istiyorum. Varsayılan param, herhangi bir kaynak için :id. Ancak, içinde başka bir kaynak varsa, üst kaynak parametresi :parent_id olarak değişir. Benim yönlendirme gibi görünür: Proje url :user_id/:id olacak ve sorunlar için url :user_id/:project_id/:id olacak için, bu :id gibi url üretecek kullanıcı modeli içinİç içe geçmiş yollarda parazitlerin geçersiz kılınması

resources :users do 
    resources :projects do 
    resources :issues 
    end 
end 

. :user_user_id/:project_project_id/:issue_id: Ben Bu gibi url üretir this

resources :users, param: :user_id do 
    resources :projects, param: :project_id do 
    resources :issues, param: :issue_id 
    end 
end 

aşağıdaki varsayılan param aşırı çalıştı. Geçersiz kıldığımdan, ana kaynağın varsayılan ekinin kapalı olmasını isterim. Yollarımın :user_id/:project_id/:issue_id gibi görünmesini istiyorum ve tüm modeller için tutarlı olmasını istiyorum. Yani proje :user_id/:project_id ile eşlenmelidir.

cevap

8

bu yolları deneyin ...

resources :users, param: :user_id 

resources :users, only: [] do 
    resources :projects, param: :project_id 
end 

resources :users, only: [] do 
    resources :projects, only: [] do 
    resources :issues, param: :issue_id 
end 
end 
0

i nasıl yaptığını bu ... Orada daha iyi bir yolu var ama hile yapmak gerekir emin değil routes.rb

resources :users, :key => :user_id do 
    resources :projects, :key => :project_id do 
     resources :issues, :key => :issue_id 
    end 
    end 
+0

Üzgünüz Haider, ama sadece parametre listelerine bir anahtar ekler: 'Parametreler: {" anahtar "=>: project_id," user_id "=>" addie "," id "= > "new_project"} ' – sonalkr132

+0

@ sonalkr132 '/ customers /: customer_id/projects /: project_id/issue'///user_user_id /: project_project_id /: issue_id' {> dönüştürmek istediğiniz sonalkr132 ???? –

+0

Hayır! Başka bir şekilde yuvarlak olmasını istiyorum. Yani:: user_user_id /: project_project_id /: issue_id' için:: user_id /: project_id /: issue_id'. Paramın geçersiz kılınması eskiyi oluşturur. – sonalkr132

3

member deneyin:

resources :users, param: :user_id do 
    member do 
    resources :projects, param: :project_id do 
     member do 
     resources :issues, param: :issue_id 
     end 
    end 
    end 
end 

bu kod aşağıdaki yolları oluşturur:

 issues GET /users/:user_id/projects/:project_id/issues(.:format)    issues#index 
      POST /users/:user_id/projects/:project_id/issues(.:format)    issues#create 
    new_issue GET /users/:user_id/projects/:project_id/issues/new(.:format)   issues#new 
    edit_issue GET /users/:user_id/projects/:project_id/issues/:issue_id/edit(.:format) issues#edit 
     issue GET /users/:user_id/projects/:project_id/issues/:issue_id(.:format)  issues#show 
      PATCH /users/:user_id/projects/:project_id/issues/:issue_id(.:format)  issues#update 
      PUT /users/:user_id/projects/:project_id/issues/:issue_id(.:format)  issues#update 
      DELETE /users/:user_id/projects/:project_id/issues/:issue_id(.:format)  issues#destroy 
    projects GET /users/:user_id/projects(.:format)         projects#index 
      POST /users/:user_id/projects(.:format)         projects#create 
new_project GET /users/:user_id/projects/new(.:format)        projects#new 
edit_project GET /users/:user_id/projects/:project_id/edit(.:format)     projects#edit 
    project GET /users/:user_id/projects/:project_id(.:format)      projects#show 
      PATCH /users/:user_id/projects/:project_id(.:format)      projects#update 
      PUT /users/:user_id/projects/:project_id(.:format)      projects#update 
      DELETE /users/:user_id/projects/:project_id(.:format)      projects#destroy 
     users GET /users(.:format)              users#index 
      POST /users(.:format)              users#create 
    new_user GET /users/new(.:format)             users#new 
    edit_user GET /users/:user_id/edit(.:format)          users#edit 
     user GET /users/:user_id(.:format)           users#show 
      PATCH /users/:user_id(.:format)           users#update 
      PUT /users/:user_id(.:format)           users#update 
      DELETE /users/:user_id(.:format)           users#destroy 

Ancak yardımcıları kabul cevap aynı değildir not.

Bunu önlemek için 'as' seçeneğini kullanabilirsiniz. Burada olduğu gibi daha çevik çözüm: https://stackoverflow.com/a/41323489/2405850

İlgili konular