Ruby on Rails 5.2 - ActionController::Renderer

क्लास एक्शनकंट्रोलर :: रेंडरर




ruby

क्लास एक्शनकंट्रोलर :: रेंडरर

जनक:
Object

ActionController::Renderer आपको नियंत्रक कार्यों में होने की आवश्यकता के बिना मनमाने टेम्पलेट्स को प्रस्तुत करने की अनुमति देता है।

ActionController :: Base # रेंडरर को लागू करके आपको एक ठोस रेंडरर वर्ग मिलता है। उदाहरण के लिए:

ApplicationController.renderer

यह आपको सीधे render करने के लिए कॉल करने की अनुमति देता है।

ApplicationController.renderer.render template: '...'

आप पिछले उदाहरण के बजाय नियंत्रक में इस शॉर्टकट का उपयोग कर सकते हैं:

ApplicationController.render template: '...'

render आपको एक ही विकल्प का उपयोग render अनुमति देता है जिसका उपयोग आप किसी नियंत्रक में रेंडर करते समय कर सकते हैं। उदाहरण के लिए:

FooController.render :action, locals: { ... }, assigns: { ... }

टेम्पलेट एक रैक वातावरण में प्रदान किया जाएगा, जो ActionController :: Renderer # env के माध्यम से सुलभ है। आप इसे दो तरीकों से सेट कर सकते हैं:

  • रेंडरर डिफॉल्ट को बदलकर, जैसे

    ApplicationController.renderer.defaults # => hash with default Rack environment
    
  • रेंडरर का एक उदाहरण इनिशियलाइज़ करके, इसे एक कस्टम एनवायरनमेंट पास करके।

    ApplicationController.renderer.new(method: 'post', https: true)
    

स्थिरांक

चूक
पहचान
RACK_KEY_TRANSLATION
RACK_VALUE_TRANSLATION

गुण

नियंत्रक [आर]
चूक [आर]

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

के लिए (नियंत्रक, env = {}, डिफ़ॉल्ट = DEFAULTS.dup) स्रोत दिखाएं
# File actionpack/lib/action_controller/renderer.rb, line 50
def self.for(controller, env = {}, defaults = DEFAULTS.dup)
  new(controller, env, defaults)
end

एक विशिष्ट नियंत्रक वर्ग के लिए एक नया रेंडरर उदाहरण बनाएं।

नया (नियंत्रक, एनवी, चूक) शो स्रोत
# File actionpack/lib/action_controller/renderer.rb, line 67
def initialize(controller, env, defaults)
  @controller = controller
  @defaults = defaults
  @env = normalize_keys defaults.merge(env)
end

में टेम्पलेट रेंडर करने के लिए एक कस्टम रैक वातावरण को स्वीकार करता है। यह ActionController::Renderer::DEFAULTS द्वारा परिभाषित डिफ़ॉल्ट रैक पर्यावरण के साथ विलय कर दिया जाएगा।

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

# File actionpack/lib/action_controller/renderer.rb, line 55
def new(env = {})
  self.class.new controller, env, defaults
end

एक ही नियंत्रक के लिए एक नया रेंडरर बनाएं लेकिन एक नए env के साथ।

रेंडर (* args) शो सोर्स
# File actionpack/lib/action_controller/renderer.rb, line 74
def render(*args)
  raise "missing controller" unless controller

  request = ActionDispatch::Request.new @env
  request.routes = controller._routes

  instance = controller.new
  instance.set_request! request
  instance.set_response! controller.make_response!(request)
  instance.render_to_string(*args)
end

ActionController :: बेस # रेंडर_टो_स्ट्रिंग से किसी भी विकल्प के साथ रेंडर टेम्प्लेट।

with_defaults (डिफ़ॉल्ट) स्रोत दिखाएं
# File actionpack/lib/action_controller/renderer.rb, line 60
def with_defaults(defaults)
  self.class.new controller, @env, self.defaults.merge(defaults)
end

एक ही नियंत्रक के लिए एक नया रेंडरर बनाएं लेकिन नए चूक के साथ।