2009-04-22 14 views
54

एक मचान उत्पन्न करने के बाद, रेल मुझे items.xml पर पोस्ट करने की क्षमता देता है जो एक नया item तैयार करेगा। items.xml पर पहुंचने से उन्हें बस सूचीबद्ध किया जाएगा। Rails निर्दिष्ट करता है कि नियंत्रक (create या index क्रमशः क्रमशः) में कौन सी विधि का प्रदर्शन किया जा रहा है, उस क्रिया के आधार पर कहलाया जाएगा?रेल पोस्ट, पुट,

अधिक विशेष रूप से, POST विधि ए को कॉल करता है लेकिन उसी यूआरएल कॉल विधि बी पर जाता है। यह निर्दिष्ट कहां है? रेल नियंत्रक के index विधि को कॉल करने का दृढ़ संकल्प कहां बनाता है?

उत्तर

88

मुझे विश्वास है कि यह REST द्वारा निर्दिष्ट है। यहाँ फिर के लिए एक सूची है:

GET /items  #=> index 
GET /items/1  #=> show 
GET /items/new #=> new 
GET /items/1/edit #=> edit 
PUT /items/1  #=> update 
POST /items  #=> create 
DELETE /items/1  #=> destroy 

संपादित जोड़ने के लिए config/routes.rb में, उन सभी मार्गों पाने के लिए, बस map.resources :items

+38

बस "रेक मार्गों" क्या हो रहा है देखने के लिए टाइप करें। –

+0

और क्या यह स्पष्ट रूप से निर्दिष्ट करने का कोई तरीका है कि मैं केवल एएसपी.नेट एमवीसी ([एचटीपीओस्ट] विशेषता) जैसे POST का उपयोग करना चाहता हूं? – Alex

+0

यदि आप किसी आइटम को GET करते हैं, तो आप इंडेक्स एक्शन पर जाएंगे। यदि आप/आइटम पर पोस्ट करते हैं, तो आप निर्माण पर जाएंगे। –

10

सबसे अच्छी जगह इस बारे में जानने के Routing Guide होगा जोड़ें।

+0

मैंने टूटे हुए लिंक को प्रतिस्थापित करने के लिए सबसे अच्छा किया था। कृपया जांचें और सुनिश्चित करें कि मैंने सही पृष्ठों से लिंक किया है। धन्यवाद। –

5

डॉन वार्व ने कहा, अपने मार्ग.आरबी फ़ाइल पर एक नज़र डालें। वहां आपके पास शायद कुछ ऐसा हो:

map.resources :items 

यह वह जगह है जहां रेल पोस्ट को लिंक करते हैं और कुछ कार्यों के अनुरोध प्राप्त करते हैं। यह देखने के लिए कि यह कैसे काम करता है अन्य उत्तरों से लिंक देखें। दस्तावेज़ एक टन में मदद करते हैं।

सभी मार्गों और वे आपके द्वारा लिंक किए जाने वाले कार्यों को rake routes को कमांड प्रॉम्प्ट में टाइप कर सकते हैं जब आप अपनी रेल निर्देशिका की जड़ में हों। यह आपको सब कुछ दिखाएगा (रूटिंग के मामले में) कि एक मचान आपको देता है।

5

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

$ rake routes 

अधिक सीधे जवाब देने के लिए, यह एक ऐसा सम्मेलन है जो रेल का उपयोग करता है। आप इस मानचित्रण की स्थापना की है जब आप अपने routes.rb

map.resources :items 
27

रेल प्रथा के अनुसार RESTful संसाधनों के लिए सात नियंत्रक तरीकों को परिभाषित करता है में निम्नलिखित की तरह कुछ डाल दिया। वे हैं:

 
Action HTTP Method Purpose 
------------------------------------------------------------------------- 
index GET   Displays a collection of resources 
show  GET   Displays a single resource 
new  GET   Displays a form for creating a new resource 
create POST   Creates a new resource (new submits to this) 
edit  GET   Displays a form for editing an existing resource 
update PUT   Updates an existing resource (edit submits to this) 
destroy DELETE  Destroys a single resource 

ध्यान दें कि क्योंकि वेब ब्राउज़र आम तौर पर केवल प्राप्त और पोस्ट, रेल PUT में इन कर देते हैं और उचित रूप में अनुरोध को हटाने के लिए एक छिपी हुई फ़ील्ड का उपयोग करता है समर्थन करते हैं।

map.resources :itemsconfig/routes.rb में निर्दिष्ट करने के लिए आपको उन सात विधियों को "मुफ्त में" मिल जाता है। आप कंसोल में rake routes दर्ज करके किसी भी समय अपने आवेदन के भीतर सभी मार्गों को सूचीबद्ध कर सकते हैं।

+0

इसके अलावा आप उन व्यवहारों में से किसी भी "पुन: उत्पन्न" करने के लिए स्रोत कोड देख सकते हैं: [रेल v3.2.9 संसाधन] (https://github.com/rails/rails/blob/v3.2.9/actionpack/lib/action_dispatch/ रूटिंग/mapper.rb # L984) actionpack/lib/action_dispatch/routing/mapper.rb पर – brutuscat

3

map.resources एक तरीका है जो स्वचालित रूप से आपको आरईएसटी मार्ग और पथ सहायक भी देता है। यह एक अच्छी सुविधा है यदि आप पहले से ही जानते हैं और समझते हैं कि कैसे रेलवे की शांतिपूर्ण रूटिंग काम करती है लेकिन यह रेल सीखने में बाधा का थोड़ा सा भी है क्योंकि बहुत ज्यादा छिपी हुई है।

Railsguides में एक अच्छा routes guide है।

6

क्या आप जानना चाहते थे कि केवल पोस्ट का उपयोग कैसे करें? ऐसा करें, उदाहरण के लिए:

resources :items, :only => [:create] 

..etc। यह रेलवे 3 के लिए है, और पोस्ट बनाने के लिए एक ही संसाधन उत्पन्न करेगा। या यदि आप केवल बाकी सेट का एक बहुत छोटे सबसेट, बस जरूरत है:

match 'items/:id' => "items#create', :via => :post 

आदि आदि

1

ईमानदारी से कहूं तो क्या तुम सच में रेल वेबसाइट पर मार्ग प्रलेखन के साथ गलत नहीं जा सकते। इससे अगले कदम उठाने और संसाधनों के आराम से आगे बढ़ने में मदद मिली है (जो कि अधिकांश ऐप्स ठीक है) और वास्तव में उपलब्ध ठोस रूटिंग सुविधाओं को कम कर देते हैं।

http://guides.rubyonrails.org/routing.html

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