2014-07-08 6 views
11

उपयोग करने के लिए: कुछ दूसरों मैं बाहर छोड़ दिया साथको सेट करने और जब रेक मार्गों मैं देख रहा हूँ चल रहे रेल मार्गों उपसर्ग

Prefix Verb URI Pattern          Controller#Action 
articles GET /articles(.:format)        articles#index 
new_article GET /articles/new(.:format)       articles#new 

इसका कारण यह है मेरी routes.rb फ़ाइल है:

resources :articles 

मेरा प्रश्न वास्तव में इस उपसर्ग है क्या है, और मैं इसे कैसे बदल जाएगा?

मेरी समझ से यह यूआरआई के लिए एक शॉर्टकट है, इसलिए मेरे ऐप में मैं केवल लेख/नए के बजाय new_article का उल्लेख कर सकता हूं? क्या मैं वास्तव में @new_article का संदर्भ देता हूं या इसके संदर्भ में कुछ अन्य प्रारूप है।

दूसरा प्रश्न, मैं इसे कैसे संपादित करूं? आइए कहें कि मैं उस यूआरएल पर अनुरोध के लिए new_article के बजाय new_document नामक एक उपसर्ग चाहता हूं। मैं अपने मार्गों में क्या रखूंगा। आरबी फाइल?

I looked at this link from the rails guides but all it seems to show is how to make the url longer by adding a prefix in front of it.

उत्तर

13

पथ

मुझे यकीन है कि क्यों यह prefix कहा जाता है नहीं कर रहा हूँ - यह path helper बुलाया जाना चाहिए:

enter image description here

लब्बोलुआब यह है जब आप link_to या form_tag आदि जैसे सहायकों कहते हैं - उन्हें आपके ऐप की रूटिंग संरचना में विभिन्न कार्रवाइयों को पॉप्युलेट करने के लिए paths की आवश्यकता होगी।

के रूप में रेल convention over configuration & DRY programming के पक्ष में है, तो आप मानक urls का उपयोग करने पर इन path helpers संदर्भित कर सकते हैं, तो यह आपको एक संदर्भ & मौका मार्ग के रूप में

ईजी

कॉलिंग articles_pathहै आवश्यक बनाने के लिए अनुमति देगा जिसका अर्थ है/articles संदर्भित करने से अधिक शक्तिशाली


मार्गों

ठीक से आपके प्रश्न का उत्तर के लिए, आप रेल की सराहना करने की आवश्यकता होगी resourceful routing उपयोग करता है - मूल रूप से अर्थ हर route सहायक आपके द्वारा बनाए जाने अपने आवेदन में किसी भी संसाधन के आसपास परिभाषित किया जाना चाहिए

कारण रेल की एमवीसी संरचना, इन संसाधनों को आम तौर पर controllers द्वारा परिभाषित किया जाएगा:

#config/routes.rb 
resources :articles #-> articles_path etc 

अपने प्रश्न का उत्तर देने के लिए, आपको यह सराहना करने की आवश्यकता है कि आपको हमेशा अपने संसाधनों का संदर्भ देना चाहिए क्योंकि वे हैं (आपके मामले में articles)।

पथ सहायक को अनुकूलित करने के लिए, अगर आप इस तरह, परिवर्तन मार्गों फ़ाइल में संदर्भ की आवश्यकता होगी:

#config/routes.rb 
resources :articles, as: :document, path: "document" #-> domain.com/documents 

यह आपको फोन करने की इजाजत दी, कस्टम मार्गों/पथ सहायकों को परिभाषित करने की अनुमति देता है जैसा कि आप चाहते हैं

11

यह आप इस तरह के new_article_path या new_article_url अपने नियंत्रकों और विचारों में के रूप में शॉर्टकट का उपयोग करते हैं। ये उपयोगकर्ताओं को एक विशिष्ट पृष्ठ पर रीडायरेक्ट करने या गतिशील लिंक उत्पन्न करने जैसी चीजें करते समय बहुत आसान होते हैं।

आप अपने मार्ग.आरबी फ़ाइल में as: विकल्प जोड़कर उपसर्ग बदल सकते हैं। उदाहरण के लिए:

GET '/new', to: 'articles#new', as: 'my_new_article` 

यह my_new_article को उपसर्ग बदल जाएगा।

1

उपसर्ग का उपयोग मार्ग सहायकों के साथ आपके आवेदन में मार्ग उत्पन्न करने के लिए किया जा सकता है। तो आपके आवेदन में, articles_path सहायक लेख लेख अनुक्रमणिका पृष्ठ के लिए एक मार्ग उत्पन्न करता है, new_article_path नए आलेख पृष्ठ का मार्ग है, और article_path (@article) @article के लिए शो पेज का मार्ग होगा।

एक अलग मार्ग निर्दिष्ट करने के लिए, आप करने के लिए अपने routes.rb फ़ाइल को बदल सकता है:

resources :articles, as: :documents 

आप दे देंगे कि:

documents GET /articles(.:format)        articles#index 
new_document GET /articles/new(.:format)       articles#new 

मैं इसे के रूप में दस्तावेजों के संसाधन नाम बदलने पर विचार हो सकता है जब आप मार्गों का नाम बदलते हैं और मार्ग और नियंत्रक के बीच शब्दावली का मिश्रण प्राप्त करते हैं तो भ्रमित हो सकते हैं।

1

आप कुछ इस तरह कर सकते हैं:

resources :articles do 
collection do 
     get "new" => "articles#new", :as => 'new_document' 
end 
end 

और आप इसका इस्तेमाल कर सकते हैं:

link_to "New foo", new_document_path 

या

link_to "New foo", new_document_url 

यूआरएल संपूर्ण url (http://server.com/controller/action) इस बीच पथ प्रिंट प्रिंट सापेक्ष यूआरएल (/controller/action)।

6

आप सही हैं, नामित मार्गों के निर्माण में उपसर्ग का उपयोग किया जाता है, इसलिए resources method मार्ग फ़ाइल में articles_path, new_article_path आदि जैसे मार्ग बनाता है।अपने कोड में किसी रूट का संदर्भ देने के लिए, पर देखे गए उपसर्ग में path जोड़ें।

आप अपने मार्गों फ़ाइल में संसाधन विधि द्वारा उत्पन्न उपसर्गों बदलना चाहते हैं, इस तरह :as option उपयोग करते हैं,:

resources :articles, as: :posts

यह 'new_post_path' की तरह मार्गों उत्पन्न होगा कि आप अपने विचारों में उपयोग कर सकते हैं।

आप ब्राउज़र में मार्ग के रास्ते में परिवर्तन करना चाहते हैं, तो आप path विकल्प का उपयोग कर सकते हैं:

resources :articles, path: :posts 

कौन सा /articles/1 or /articles/new के बजाय /posts/1 or /posts/new तरह मार्गों उत्पन्न होगा, लेकिन अभी भी मार्गों articles_path, new_article_path नाम दिया जाएगा आदि अपने कोड में। आप अपने संसाधन मार्गों के path and the prefix दोनों को बदलने के लिए :path and :as दोनों विकल्पों का उपयोग कर सकते हैं।

अपने मार्गों फ़ाइल में एक बुनियादी मार्ग बदलने के लिए, आप बस, :as उपयोग कर सकते हैं तो जैसे:

get 'messages' => 'messages#index', as: :inbox

इस मार्ग inbox_path जो आप अपने कोड में उपयोग कर सकते हैं।

आशा है कि मदद करता है!

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