मैं एक डेटाबेस में वस्तुओं के किसी उप-पहचान के लिए उपयोगकर्ता को सक्षम करने के एक सूचकांक पृष्ठ पर तीन बटन की एक श्रृंखला का उत्पादन करने में कामयाब हो में पृष्ठों के बीच एक पैरामीटर मान याद करने के लिए - बटन 1 - प्रकार = "नया" , बटन 2 - प्रकार = "प्रयुक्त", बटन 3 - कोई प्रतिबंध यानी नया या उपयोग किया जा सकता है।कैसे एक नियंत्रक
वर्तमान में index.html.erb शामिल हैं:
<%= link_to "New", :controller => params[:controller], :action => params[:action], :product_type => 'New' %>
<%= link_to "Used", :controller => params[:controller], :action => params[:action], :product_type => 'Used' %>
<%= link_to "Don't Restrict", :controller => params[:controller], :action => params[:action], :product_type => nil %>
product.rb के भीतर मेरे पास है:
scope :by_product_type, lambda{|product_type| where(:product_type => product_type) unless product_type.nil? }
अंत में मेरे पास है productfinder_controller:
before_filter :load_grips, :only => [:index, :bybrand, :bycolour, :byprice]
protected
def load_products
if params[:product_type]
@productssmatchingtype = Product.by_product_type(params[:product_type])
else
@productsmatchingtype = Product
end
end
ऊपर कोड वास्तव में काम करता है जैसा कि मैंने आशा की थी, बटन 1 या बटन 2 दबाए जाने पर सभी वस्तुओं को प्रारंभ में लोड करना और उन्हें प्रतिबंधित करना।
मैं भी Productfindercontroller, अर्थात् byprice के भीतर 3 अन्य पृष्ठों पर इसी तरह की सुविधा के लिए, bybrand और bycolour चाहते हैं। मैंने इन 3 अन्य .html.erb फ़ाइलों में से प्रत्येक में ऊपर दिए गए कोड को रखा है और फिर चीजें व्यवहार करने लगती हैं ...
EXCEPT - जब कोई नया पृष्ठ लोड हो जाता है तो डिफ़ॉल्ट है कि सभी उत्पाद हैं दिखाया गया है, यानी यह याद नहीं किया गया है कि उपयोगकर्ता ने पिछले पृष्ठ पर किस बटन को दबाया था। क्या नियंत्रक के सभी पृष्ठों के लिए कहीं भी दबाए गए बटन के बारे में जानकारी संग्रहीत करना संभव है? इसी तरह/वैकल्पिक रूप से, क्या @productsmatchingtype (productfinder_controller में) को इस तरह से परिभाषित करना संभव है कि यह सभी पृष्ठों तक पहुंच योग्य है और फिर से स्क्रैच से शुरू करने की आवश्यकता नहीं है?
आप सत्र में राज्य को स्टोर कर सकते हैं और अगले अनुरोध पर इसकी जांच कर सकते हैं। सत्र [: कुछ] = "आपका मूल्य" – Rafal