2011-08-03 13 views
7

में लगातार पैरामीटर रेल नियंत्रक में पैरामीटर को बनाए रखने (संरक्षित) करने का कोई तरीका है? यह प्रत्येक कार्रवाई, फिर प्रत्येक दृश्य और प्रत्येक लिंक के लिए पारित किया जाना चाहिए।रेल नियंत्रक

उदाहरण की स्थिति: मेरे पास इसके नियंत्रक के साथ इकाई ए है। इसके अलावा, मैं किसी अन्य संस्था बी जो ए पर निर्भर है मैं "जनक" एक इकाई बहुत बार उपयोग करने के लिए की जरूरत है, तो मैं यह अभी भी रूप में

http://some_url/b_controller/b_action?a_entity=xyz

उत्तर

9

आप before_filter और default_url_options के संयोजन का उपयोग, अपने नियंत्रक से सब कुछ करने में सक्षम होना चाहिए:

class MyController < ApplicationController 

    before_filter :set_a_entity 

    def set_a_entity 
    @a_entity = params['a_entity'] 
    # or @a_entity = Entity.find(params['a_entity']) 
    end 

    # Rails 3 
    def url_options 
    {:a_entity => @a_entity}.merge(super) 
    end 

    # Rails 2 
    def default_url_options 
    {:a_entity => @entity} 
    end 

end 

यह समस्या का समाधान नहीं करता @a_entity के प्रारंभिक मान को सेट करने के लिए, लेकिन यह कहीं से भी किया जा सकता है (देखें, नियंत्रक, आदि)।

यदि आप चाहते हैं कि यह पैरामीटर एकाधिक नियंत्रकों में चारों ओर पारित हो, तो आप MyController < ApplicationController को ApplicationController < ActionController::Base के साथ प्रतिस्थापित कर सकते हैं और इसे भी काम करना चाहिए।

उम्मीद है कि इससे मदद मिलती है।

+2

मैंने आपके समाधान का उपयोग नहीं किया है क्योंकि मुझे हर नियंत्रक के लिए हमेशा के लिए विकल्प जारी रखने की आवश्यकता नहीं है, लेकिन मूल रूप से यह काम करता है। देर से स्वीकार करने के लिए धन्यवाद और खेद है। –

+0

वह समाधान एक विशिष्ट एकल नियंत्रक के अंदर भी काम करता है। आपका बहुत बहुत धन्यवाद। –

+0

@ एफ। फिलिपी हेड-अप के लिए धन्यवाद, मैंने अपना जवाब संशोधित किया क्योंकि एकल नियंत्रक केस वास्तव में अधिक उपयोगी है। –

2

करना चाहते हैं क्यों में ऐसा नहीं डाल फिर एक सत्र पैरामीटर?

session["a_entity"] = "xyz" 

इस तरह आप इसे अपने सभी अन्य नियंत्रकों में तब तक एक्सेस कर सकते हैं जब तक आप इसे साफ़ नहीं करते या यह समाप्त हो जाता है। यहाँ

अधिक जानकारी:

http://api.rubyonrails.org/classes/ActionController/Base.html

+0

मैं अपना ऐप रीस्टफुल करना चाहता हूं। साथ ही मुझे संग्रहित यूआरएल की वजह से सत्र थोड़ा मुश्किल लगता है जो विभिन्न सत्रों के साथ अलग-अलग परिणामों का कारण बन सकता है। –

+0

क्या आप हमें एक उदाहरण दिखा सकते हैं? कल्पना करना मुश्किल है कि आपका ऐप कुछ सामान्य विचारों के साथ कैसे काम करता है – corroded

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