2015-07-31 6 views
5

हाल ही में मुझे इस चर्चा से मार्गों में रेल चिंताओं के बारे में पता होना चाहिए How to have one resource in routes for namespace and root path altogether - Rails 4। अब मेरे आवेदन में मेरे पास इस तरह के मार्ग हैं:संसाधनों के लिए विभिन्न परम परिभाषित करने वाली रूटिंग चिंताओं

namespace :admin do 
    resources :photos 
    resources :businesses 
    resources :projects 
    resources :quotes 
end 
resources :photos, param: 'slug' 
resources :businesses, param: 'slug' do 
    resources :projects, param: 'slug' #As I need both the url one inside business and one outside 
end 
resources :projects, param: 'slug' 
resources :quotes, param: 'slug' 

और ऐसे कई संसाधन हैं जो दोहराए जा रहे हैं क्योंकि मुझे उनकी आवश्यकता है। मैं चिंताओं के बारे में जानता हूं कि उन्हें कैसे कार्यान्वित किया जाए। चिंताओं के साथ मैं इस तरह यह कर सकते हैं:

concern :shared_resources do 
    resources :photos 
    resources :businesses 
    resources :projects 
    resources :quotes 
end 
namespace :admin do 
    concerns :shared_resources 
end 
concerns :shared_resources 

लेकिन मैं कैसे अलग चिंताओं में हर बार दे सकते हैं param? मैंने इसे ऐसा करने की कोशिश की:

concerns :shared_resources, param: 'slug' 

लेकिन इससे मार्गों में कोई बदलाव नहीं आया है। और यदि मैं जोड़ता हूं:

resources :photos, param: 'slug' 

फिर यह आईडी के बजाय दोनों मार्गों को स्लग में जोड़ देगा। लेकिन व्यवस्थापक पक्ष में मुझे आईडी चाहिए और सामने के अंत में मुझे स्लग चाहिए। तो कोड को डीआरवाई करने के लिए चिंताओं में इसे पारित करने के लिए कोई विकल्प हैं।

उत्तर

5

हाँ मुझे इस बारे में कुछ याद आया। यह रेल गाइड में नहीं था, लेकिन an answer to a SO question जिसने मुझे आश्चर्यचकित किया। आप एक ब्लॉक का उपयोग कर सकते हैं: (उपर्युक्त उत्तर से उद्धृत)

रेल 4 में आप चिंताओं के विकल्प पारित कर सकते हैं। तो अगर आप ऐसा करते हैं:

# routes.rb 
concern :commentable do |options| 
    resources :comments, options 
end 

resources :articles do 
    concerns :commentable, commentable_param: 'slug' 
end 

फिर जब आप मार्गों रेक, आप आप की तरह

POST /articles/:id/comments, {commentable_param: 'slug'} 
+0

उत्तर के लिए धन्यवाद लेकिन दुर्भाग्य से यह काम नहीं किया एक मार्ग मिल देखेंगे मुझे कोई बदलाव नहीं मिला। क्या आपने कभी यह कोशिश की है? इसका मतलब है कि यह आपके लिए काम करता है। – Deep

+0

हम्म मुझे इस बारे में निश्चित नहीं था, लेकिन मैंने जो प्रश्न पूछा, उसमें उन्होंने पैरामीटर का उपयोग किया जो '$ {concern_name} _something' जैसा दिखता था। यदि आप काम करते हैं तो क्या आप इस वाक्यविन्यास के साथ प्रयास कर सकते हैं? ईमानदार होने के लिए मैंने इसे स्वयं नहीं किया लेकिन उत्तर के उपरांतों को देखते हुए मैंने सोचा कि यह काम करेगा ... –

+0

यह यहां काम किया! धन्यवाद: डी –

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