2013-01-06 19 views
7

मैं रेल पर रूबी पढ़ रहा हूँ अर्थात् मार्गदर्शन करता है, "लेआउट और प्रतिपादन" विषय http://guides.rubyonrails.org/layouts_and_rendering.htmlरीडायरेक्ट_to विधि में आवृत्ति चर पारित करने के बारे में भ्रम। के रूप में रेल गाइड में देखा

पर मैं एक redirect_to विधि के लिए एक उदाहरण चर गुजर के बारे में उलझन में हूँ। यह कैसे संभव है? मैंने सोचा कि redirect_to किसी अन्य वेबपृष्ठ या यूआरएल पर रीडायरेक्ट करने के लिए प्रासंगिक होगा।

2.2.2 एक कार्रवाई के दृश्य

प्रतिपादन आप विचार है कि भीतर एक अलग कार्रवाई से मेल खाती है प्रस्तुत करना चाहते हैं:

गाइड पर दिए गए उदाहरण में यह निम्नलिखित कहते हैं

def update 
    @book = Book.find(params[:id]) 
    if @book.update_attributes(params[:book]) 
    redirect_to(@book) 
    else 
    render "edit" 
    end 
end 
012: एक ही टेम्पलेट, आप दृश्य का नाम के साथ प्रस्तुत उपयोग कर सकते हैं

"संपादन" प्रस्तुत करना पूरी तरह से समझ में आता है, यह फिर से उस नए रूप को प्रस्तुत करने जा रहा है। लेकिन redirect_to(@book) के साथ दुनिया में क्या चल रहा है? वास्तव में क्या प्रस्तुत करना है और पुस्तक वस्तु को कैसे रीडायरेक्ट किया जा रहा है? Btw, पुस्तक मॉडल कॉलम, नाम, लेखक, पृष्ठों आदि ...

उत्तर

18

redirect_to documentation

redirect_to (है विकल्प = {}, response_status = {}) विकल्पों में निर्दिष्ट लक्ष्य पर ब्राउज़र को पुनर्निर्देशित करता है। रिकॉर्ड - URL के साथ url_for पर कॉल करके यूआरएल उत्पन्न किया जाएगा, जो उस रिकॉर्ड के लिए नामित यूआरएल का संदर्भ देगा।

तो जब एक redirect_to(@book) करता @book एक id के साथ एक विशिष्ट रिकार्ड है।

इस प्रकार, संबद्ध रिकॉर्ड (इस मामले @book में) दिखाने विधि टेम्पलेट के रूप में प्रयोग किया जाता है।

उपरोक्त के अतिरिक्त, यदि आप routes.rb फ़ाइल जो इन रास्तों को परिभाषित करता है पर देखने के आप देखेंगे

resources :books 

अब इस मार्ग अनिवार्य रूप से अनुवाद किया है के रूप में (आप rake routes चलाकर देख सकते हैं)

books GET /books(.:format)     books#index 
      POST /books(.:format)     books#create 
new_book GET /books/new(.:format)    books#new 
edit_book GET /books/:id/edit(.:format)   books#edit 
    book GET /books/:id(.:format)    books#show 
      PUT /books/:id(.:format)    books#update 
      DELETE /books/:id(.:format)    books#destroy 

book GET /books/:id books#show पर ध्यान दें - जब आप redirect_to(@book)

+0

उत्कृष्ट। आपका बहुत बहुत धन्यवाद! क्रिस्टल स्पष्ट! –

+0

इसके लिए धन्यवाद! इसे मेरे लिए साफ़ कर दिया –

0

यह उदाहरण के लिए, एक किताब पर रीडायरेक्ट करेंगे "/ पुस्तकों/65"

+0

पर मेल खाते हैं तो यूआरएल/myapp/books/65 और 65 पैरा हैश के माध्यम से पारित हो जाता है, वास्तव में redirect_to (@book) क्या है। यह मुझे एक ऐसे पृष्ठ पर ले जाएगा जो पुस्तक 65 के लिए विवरण दिखाता है? इसके अलावा, परम हैश के बारे में क्या है जिसमें परम है [पुस्तक] .. यह क्या है? एक फॉर्म पोस्ट विधि जिसमें सभी रिकॉर्ड शामिल हैं? –