2010-04-28 20 views
22

सिनात्रा के रेल के redirect_to विधि के बराबर क्या है? मुझे अपने दृश्य में पारित आवृत्ति चर को संरक्षित करते समय एक पोस्ट सबमिशन/प्रपत्र जमा करने के लिए प्रवाह प्राप्त करने की आवश्यकता है। redirect विधि का उपयोग करते समय आवृत्ति चर खो जाते हैं।पोस्ट/रीडायरेक्ट/सिनात्रा का उपयोग कैसे करें?

+0

http://stackoverflow.com/questions/4726884/can-you-specify-the-http-method- उपयोग करने के साथ-sinatras-redirect – Dmitry

+0

आप नेट :: HTTP http://stackoverflow.com/questions/10184737/how-can-i-make-a-post-request-inside- ruby-sinatra –

उत्तर

6

Sinatra Book अपने प्रश्न को साफ़ करना चाहिए। विशेष रूप से "Redirect" भाग।

किताब से उद्धरित:

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

एक रीडायरेक्ट के दौरान अनुरोधों का प्रवाह है: ब्राउज़र -> ब्राउज़र (अनुरोध '/') - -> सर्वर

+1

समाधान सत्र में चीजों को स्टोर करना है। वर्तमान में ivars में रीडायरेक्ट के बाद आवश्यक सभी मानों को सत्र में रखा जाना चाहिए। –

+0

मैंने हाल ही में एक समान प्रश्न पूछा है, लेकिन क्लाइंट पक्ष पर कुकीज़ अक्षम होने पर अभी तक एक निश्चित उत्तर नहीं मिला है ... क्या आप एकमात्र समाधान का सुझाव देते हैं जिसे आप जानते हैं? कोई और ? धन्यवाद –

+1

सीनात्रा पुस्तक लिंक अब उपलब्ध नहीं है। – Andres

47

पुनर्निर्देशन ('/' के लिए परिणाम)> सर्वर (करने के लिए '/' अनुप्रेषित) सिनात्रा में उपयोग करने के लिए सबसे आसान है।

तो नीचे दिए गए कोड की व्याख्या कर सकते हैं:

require 'rubygems' 
require 'sinatra' 

get '/' do 
    redirect "http://example.com" 
end 

आप भी इस तरह अपने वर्तमान आवेदन में एक और रास्ता रीडायरेक्ट कर सकते हैं, हालांकि यह नमूना एक विधि को नष्ट करेगा।

delete '/delete_post' do 
    redirect '/list_posts' 
end 

एक बहुत ही आम जगह है जहाँ यह रीडायरेक्ट अनुदेश प्रयोग किया जाता है प्रमाणीकरण किया जा रहा है

def authorize! 
    redirect '/login' unless authorized? 
end 

आप के तहत और अधिक नमूने देख सकते हैं:

Sinatra Manual

FAQ

Extensions

अपने दूसरे प्रश्न का सवाल है, विचारों में चर गुजर, यह संभव इस तरह है:

get '/pizza/:id' do 
    # makeing lots of pizza 
    @foo = Foo.find(params[:id]) 
    erb '%h1= @foo.name' 
end 
+3

यह मेरे प्रश्न का उत्तर नहीं देता है। मैं एक हैंडलर में रीडायरेक्ट करना चाहता हूं और उदाहरण चरों को संरक्षित करना चाहता हूं, जैसे आप रेल में कर सकते हैं। –

+0

यदि आप पोस्ट करते हैं तो क्रोम में यह पोस्ट पोस्ट करता है, इसलिए पृष्ठ को रीफ्रेश करने पर आपको फॉर्म पुनर्वितरण मिलता है। – Dmitry

+1

सिनात्रा मैनुअल अब एक वैध लिंक नहीं है। – zhon

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