Ruby on Rails 5.2 - ActionController::MimeResponds::Collector

वर्ग ActionController :: MimeResponds :: कलेक्टर




ruby

वर्ग ActionController :: MimeResponds :: कलेक्टर

जनक:
Object
शामिल मॉड्यूल:
AbstractController :: कलेक्टर

किसी विशेष क्रिया के लिए भेजे गए विभिन्न माइम-प्रकारों के अनुरोधों के लिए वर्तमान नियंत्रक से उपलब्ध प्रतिक्रियाओं के लिए एक कंटेनर।

पब्लिक कंट्रोलर के तरीके response_to को एक ब्लॉक के साथ बुलाया जा सकता है, जिसका उपयोग विभिन्न माइम-प्रकारों के लिए प्रतिक्रियाओं को परिभाषित करने के लिए किया जाता है, जैसे response_to के लिए:

respond_to do |format|
  format.html
  format.xml { render xml: @people }
end

इस उपयोग में, ब्लॉक को दिया गया तर्क (ऊपर format ) ActionController::MimeResponds::Collector वर्ग का एक उदाहरण है। यह ऑब्जेक्ट एक कंटेनर के रूप में कार्य करता है जिसमें उपलब्ध प्रतिक्रियाओं को ActionController::MimeResponds::Collector पर गतिशील रूप से उत्पन्न, माइम-टाइप-विशिष्ट विधियों जैसे html , xml आदि में से किसी पर कॉल करके संग्रहीत किया जा सकता है। प्रत्येक प्रतिक्रिया यदि मौजूद है तो इसी ब्लॉक को दर्शाया जाता है।

negotiate_format(request) बाद कॉल करने के लिए negotiate_format(request) ActionController::MimeResponds::Collector को यह निर्धारित करने के लिए सक्षम करेगा कि यह वर्तमान अनुरोध के लिए किस विशिष्ट माइम-प्रकार का जवाब देना चाहिए, इस प्रतिक्रिया के साथ फिर कॉलिंग response द्वारा सुलभ हो सकता है।

गुण

प्रारूप [आरडब्ल्यू]

पब्लिक क्लास के तरीके

new (mimes, variant = nil) स्रोत दिखाएँ
# File actionpack/lib/action_controller/metal/mime_responds.rb, line 235
def initialize(mimes, variant = nil)
  @responses = {}
  @variant = variant

  mimes.each { |mime| @responses[Mime[mime]] = nil }
end

सार्वजनिक प्रवृत्ति के तरीके

सभी (* आर्ग, और ब्लॉक)
अन्य के लिए उपनाम: any
कोई भी (* आर्ग्स, और ब्लॉक) दिखाएँ स्रोत
# File actionpack/lib/action_controller/metal/mime_responds.rb, line 242
def any(*args, &block)
  if args.any?
    args.each { |type| send(type, &block) }
  else
    custom(Mime::ALL, &block)
  end
end
के रूप में भी उपनाम: all
कस्टम (mime_type, और ब्लॉक) स्रोत दिखाएं
# File actionpack/lib/action_controller/metal/mime_responds.rb, line 251
def custom(mime_type, &block)
  mime_type = Mime::Type.lookup(mime_type.to_s) unless mime_type.is_a?(Mime::Type)
  @responses[mime_type] ||= if block_given?
    block
  else
    VariantCollector.new(@variant)
  end
end
Talate_format (अनुरोध) स्रोत दिखाएं
# File actionpack/lib/action_controller/metal/mime_responds.rb, line 273
def negotiate_format(request)
  @format = request.negotiate_mime(@responses.keys)
end
प्रतिक्रिया () स्रोत दिखाएँ
# File actionpack/lib/action_controller/metal/mime_responds.rb, line 260
def response
  response = @responses.fetch(format, @responses[Mime::ALL])
  if response.is_a?(VariantCollector) # `format.html.phone` - variant inline syntax
    response.variant
  elsif response.nil? || response.arity == 0 # `format.html` - just a format, call its block
    response
  else # `format.html{ |variant| variant.phone }` - variant block syntax
    variant_collector = VariantCollector.new(@variant)
    response.call(variant_collector) # call format block with variants collector
    variant_collector.variant
  end
end