2015-11-15 10 views
5

मेरे पास एक रेल दृश्य पर एक फॉर्म है जो एक पृष्ठ पर डेटा सबमिट करता है जो एक शॉपिंग कार्ट सारांश पृष्ठ का प्रतिनिधित्व करेगा।रेल सत्र डेटा - एक हैश में स्टोर

जब मैं अगले पृष्ठ पर डेटा जमा करता हूं तो वे कंसोल आउटपुट के अनुसार निम्नानुसार प्रेषित होते हैं।

"team"=>{"team_name"=>"Joe Blogs", "email"=>"[email protected]", "player1"=>" 
3", "player2"=>"4", "player3"=>"5"} 

मैं इस डेटा संग्रहीत करना चाहते हैं एक हैश तो मैं एक और हैश प्रविष्टि के रूप में सत्र में जोड़ सकते हैं एक और टीम सारांश पृष्ठ पर सबमिट किया जाता है, तो के रूप में एक सत्र चर अर्थात् है। यानी टीम [1], टीम [2]। फिर मैं टीम [1] .team_name, आदि तक पहुंच सकता हूं और तदनुसार इसका उपयोग कर सकता हूं।

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

मुझे यह नहीं पता कि यह कैसे करना है या यदि यह भी संभव है।

इस पर लागू करने के तरीके पर कोई समाधान या सुझाव?

उत्तर

3

आप आसानी से रेल सत्र में हैश स्टोर कर सकते हैं।

उदाहरण:

class SomeController < ApplicationController 
    def some_action 
    session[:cart] = {"team_name"=>"Joe Blogs", "email"=>"[email protected]", "player1"=>"3", "player2"=>"4", "player3"=>"5"} 
    end 
end 

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

डेटाबेस में सत्र संग्रहीत करने के लिए आप activerecord-session_store मणि का उपयोग कर सकते हैं।

+0

उत्तर के लिए धन्यवाद। तो अगर मैं सत्र के टीम_नाम भाग तक पहुंचना चाहता था [: कार्ट] क्या मैं अभी भी इसे प्राप्त कर सकता हूं? अगर मैं चाहता हूं कि एकाधिक प्रविष्टियां एक सत्र मुझे सत्र दे सकती हैं [: कार्ट] [1] उदाहरण के लिए। क्षमा करें अगर वे बुनियादी लगते हैं लेकिन इसे कार्यान्वित करने के तरीके को करने का प्रयास कर रहे हैं। – Alan

+1

हां, 'सत्र [: कार्ट]' सरणी और हैश पकड़ सकता है, इसलिए यह आपको जो कुछ भी डाल देगा उसे वापस कर देगा। जैसे 'सत्र [: कार्ट] [' team_name '] ' –

+0

ग्रेट तो सत्र कर सकते हैं [: कार्ट] [1] एक हैश भी पकड़ सकता है और मैं इसे सत्र [: कार्ट] [1] [' team_name '] तक एक्सेस कर सकता हूं यदि मैं बैठे सत्र [: कार्ट] [1] = {"team_name" => "जो ब्लॉग", "ईमेल" => "[email protected]", "player1" => "3", "player2" => "4 "," प्लेयर 3 "=>" 5 "}? इससे मुझे सत्र में कुछ "टीमें" स्टोर करने की इजाजत मिलेगी? – Alan

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