2015-08-29 13 views
5

मैं अपने मार्गों के सम्मेलन का नामकरण करने में निरंतरता रखना चाहता हूं। किसी भी संसाधन के लिए डिफ़ॉल्ट param :id है। हालांकि अगर कोई इसमें किसी अन्य संसाधन का घोंसला करता है, तो मूल संसाधन का सर्वो :parent_id में बदल जाता है। मेरे मार्ग की तरह दिखता है:,नेस्टेड मार्गों में पैरामीटर ओवरराइडिंग

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

उपयोगकर्ता मॉडल यह :id तरह यूआरएल उत्पन्न होगा के लिए परियोजना यूआरएल के लिए :user_id/:id हो जाएगा और मुद्दों के लिए यूआरएल :user_id/:project_id/:id हो जाएगा। :user_user_id/:project_project_id/:issue_id: मैं निम्नलिखित this

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

ऐसा लगता है कि यूआरएल उत्पन्न डिफ़ॉल्ट परम ओवरलोड की कोशिश की। चूंकि मैं इसे ओवरराइड कर रहा हूं, मैं चाहता हूं कि मूल संसाधन का डिफ़ॉल्ट अनुलग्नक बंद हो। मैं चाहता हूं कि मेरे मार्ग :user_id/:project_id/:issue_id जैसा दिखें और मैं चाहता हूं कि यह सभी मॉडलों के लिए सुसंगत रहे। यानी परियोजना को :user_id/:project_id पर मैप किया जाना चाहिए।

उत्तर

8

में इन मार्गों का प्रयास करें इस बारे में सुनिश्चित नहीं वहाँ एक बेहतर तरीका है, लेकिन यह चाल करना चाहिए अगर है कैसे मैं यह किया ... ...

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

routes.rb

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

क्षमा करें हैदर, लेकिन यह केवल पैरामीटर सूचियों के लिए एक कुंजी जोड़ता है: 'पैरामीटर: {"कुंजी" =>: project_id, "user_id" => "addie", "id" = > "new_project"} ' – sonalkr132

+0

@ sonalkr132 आप'/clients /: customer_id/projects /: project_id/issues' को '/: user_user_id /: project_project_id /: issue_id' में कनवर्ट करना चाहते हैं ???? –

+0

नहीं! मैं इसे दूसरे तरीके से चाहता हूं। यानी ': user_user_id /: project_project_id /: issue_id' से' user_id /: project_id /: issue_id'। परम ओवरराइडिंग पूर्व उत्पन्न करता है। – sonalkr132

3

member कोशिश:

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 

इस कोड को निम्न पथों उत्पन्न करेगा:

 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 

हालांकि, टिप्पणी कि सहायकों स्वीकार किए जाते हैं जवाब में के रूप में ही नहीं हैं।

आप इससे बचने के लिए 'as' विकल्प का उपयोग कर सकते हैं। यहां जितना अधिक चुस्त समाधान है: https://stackoverflow.com/a/41323489/2405850

संबंधित मुद्दे