इस के लिए कोई साफ समाधान हुआ करता था। मान लें कि आप before_filters
पर नियंत्रण की जरूरत नहीं है (या उन्हें बदलने के लिए नहीं करना चाहते हैं), मैं skip_before_filter
छोड़ने के लिए और एक अतिरिक्त before_filter
कि केवल वांछित तरीकों को निष्पादित करता है, तो यह एक xhr
विधि है जोड़ना होगा।
तो जैसे
skip_before_filter :load_something, # how to skip these only
:load_something_else # if the request is xhr ?
before_filter :do_loads_if_xhr
def do_loads_if_xhr
if request.xhr?
load_something
load_something_else
end
end
विधि वर्णित here कुछ ही काम करता है क्योंकि सशर्त आवेदन के लिए वैश्विक है: सशर्त केवल मूल्यांकन किया जाता है जब वर्ग बनाया जाता है। प्रत्येक अनुरोध पर नहीं।
[अद्यतन] हालांकि, skip_before_filter
सशर्त बनाने के लिए एक क्लीनर तरीका है। इसे इस तरह लिखें:
skip_before_filter :load_something, :load_something_else, :if => proc {|c| request.xhr?}
इसके अलावा, ध्यान दें कि skip_before_filter
अब भी है, जबकि पूरी तरह से समर्थित है, और नहीं पदावनत के बाद से रेल 4 प्रलेखन (समान) skip_before_action
पसंद करने लगता है। इसके अलावा दस्तावेज़ इस बारे में बिल्कुल स्पष्ट नहीं है, कोड में सत्यापित करना था।
विधियों को एक साथ नहीं होना चाहिए ताकि अगर कोई पिछला लौटता है तो अन्य नहीं चलेंगे और फ़िल्टर श्रृंखला रुक जाएगी? –