Ruby on Rails 5.2 - ActionView::Helpers::RenderingHelper

मॉड्यूल ActionView :: सहायक :: RenderingHelper




ruby

मॉड्यूल ActionView :: सहायक :: RenderingHelper

एक्शन व्यू Rendering

लागू करने के तरीके जो एक दृश्य संदर्भ से प्रतिपादन की अनुमति देते हैं। इस मॉड्यूल का उपयोग करने के लिए, आपको केवल view_renderer को लागू करना है जो एक ActionView::Renderer ऑब्जेक्ट लौटाता है।

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

_layout_for (* args, & block) स्रोत दिखाएं
# File actionview/lib/action_view/helpers/rendering_helper.rb, line 88
def _layout_for(*args, &block)
  name = args.first

  if block && !name.is_a?(Symbol)
    capture(*args, &block)
  else
    super
  end
end

संदर्भ ऑब्जेक्ट में #_layout_for को अधिलेखित करता है, इसलिए यह उस मामले का समर्थन करता है जिसे एक आंशिक रूप से ब्लॉक किया गया है। एक नाम या एक ब्लॉक दिया जाता है, जो एक लेआउट के लिए उपज रहे हैं सामग्री देता है।

आप एक लेआउट को एक विधि के रूप में सोच सकते हैं जिसे ब्लॉक के साथ कहा जाता है। यदि उपयोगकर्ता yield :some_name कहता yield :some_name , ब्लॉक, डिफ़ॉल्ट रूप से, content_for(:some_name) । यदि उपयोगकर्ता केवल yield कहता yield , तो डिफ़ॉल्ट ब्लॉक content_for(:layout)

उपयोगकर्ता लेआउट में एक ब्लॉक पास करके इस डिफ़ॉल्ट को ओवरराइड कर सकता है:

# The template
<%= render layout: "my_layout" do %>
  Content
<% end %>

# The layout
<html>
  <%= yield %>
</html>

इस मामले में, डिफ़ॉल्ट ब्लॉक के बजाय, जो content_for(:layout) लौटाएगा, यह विधि उस ब्लॉक को लौटाती है जिसे render :layout करने के render :layout पास किया गया था render :layout , और प्रतिक्रिया होगी

<html>
  Content
</html>

अंत में, ब्लॉक ब्लॉक तर्क ले सकता है, जिसे yield द्वारा पारित किया जा सकता yield :

# The template
<%= render layout: "my_layout" do |customer| %>
  Hello <%= customer.name %>
<% end %>

# The layout
<html>
  <%= yield Struct.new(:name).new("David") %>
</html>

इस मामले में, लेआउट ब्लॉक को render :layout में पारित कर देगा render :layout , और निर्दिष्ट संरचना तर्क के रूप में ब्लॉक में पारित हो जाएगी। परिणाम होगा

<html>
  Hello David
</html>
सुपरक्लास विधि कहता है
रेंडर (विकल्प = {}, स्थानीय = {}, और ब्लॉक) स्रोत दिखाएं
# File actionview/lib/action_view/helpers/rendering_helper.rb, line 27
def render(options = {}, locals = {}, &block)
  case options
  when Hash
    if block_given?
      view_renderer.render_partial(self, options.merge(partial: options[:layout]), &block)
    else
      view_renderer.render(self, options)
    end
  else
    view_renderer.render_partial(self, partial: options, locals: locals, &block)
  end
end

विकल्प हैश द्वारा निर्धारित एक रेंडर का परिणाम लौटाता है। प्राथमिक विकल्प हैं:

  • :partial - देखें ActionView::PartialRenderer

  • :file - एक स्पष्ट टेम्पलेट फ़ाइल रेंडर करता है (यह पुराने डिफ़ॉल्ट हुआ करता था), जोड़ें: उन में पारित करने के लिए स्थानीय।

  • :inline - रेंडर इनलाइन टेम्प्लेट के समान है कि यह नियंत्रक में कैसे किया जाता है।

  • :plain - पाठ बाहर सौंप दिया। सामग्री प्रकार को text/plain रूप में सेट करना।

  • :html - रेंडर HTML सुरक्षित स्ट्रिंग बाहर पारित, अन्यथा पहले स्ट्रिंग पर HTML से बच निकलता है। सामग्री प्रकार को text/html रूप में सेट करना।

  • :body - पाठ को रेंडर किया गया, और ActionDispatch::Response ऑब्जेक्ट से text/plain की सामग्री प्रकार विरासत में मिला।

यदि कोई विकल्प हैश पास नहीं है या: अपडेट निर्दिष्ट है, तो डिफ़ॉल्ट को आंशिक रूप से रेंडर करना और स्थानीय हैश के रूप में दूसरे पैरामीटर का उपयोग करना है।