ruby on rails रेल में ईआरबी में<%,<%=,<%#और-%> के बीच क्या अंतर है?




ruby-on-rails templates (4)

क्या कोई ईआरबी फ़ाइल में उपयोग किए जाने वाले निम्नलिखित वर्णों के उपयोग का वर्णन कर सकता है:

<%   %>
<%=  %>
<%  -%>
<%#  %>

प्रत्येक का उपयोग क्या है?


<% %> और <%- and -%> किसी भी रूबी कोड के लिए हैं, लेकिन परिणाम आउटपुट नहीं करते हैं (उदाहरण के लिए यदि कथन)। दोनों एक ही हैं।

<%= %> रूबी कोड के परिणामों को आउटपुट करने के लिए है

<%# %> एक ईआरबी टिप्पणी है

यहां एक अच्छी मार्गदर्शिका दी गई है: http://api.rubyonrails.org/classes/ActionView/Base.html


<% %>

ब्रैकेट के भीतर रूबी कोड निष्पादित करता है।

<%= %>

कुछ एरब फ़ाइल में प्रिंट करता है।

<% -%>

अभिव्यक्ति के बाद लाइन ब्रेक से बचें।

<%# %>

ब्रैकेट के भीतर कोड बाहर टिप्पणियाँ; क्लाइंट को नहीं भेजा गया (एचटीएमएल टिप्पणियों के विपरीत)।

ईआरबी के बारे में अधिक जानकारी के लिए रूबी डॉक्टर पर जाएं।


इन रेलों पर रूबी में उपयोग किया जाता है : -

<%%>: -

<%%> टैग रूबी कोड को निष्पादित करने के लिए उपयोग किए जाते हैं जो कुछ भी वापस नहीं करता है, जैसे परिस्थितियों, लूप या ब्लॉक। उदाहरण: -

<h1>Names of all the people</h1>
<% @people.each do |person| %>
  Name: <%= person.name %><br>
<% end %>

<% =%>: -

सामग्री प्रदर्शित करने के लिए उपयोग करें।

Name: <%= person.name %><br>

<% -%>: -

रेल ईआरबी फैलाता है, ताकि आप रेल टेम्पलेट्स में टैग के पीछे एक पीछे वाले हाइफ़न जोड़कर नई लाइन को दबा सकें

<% #%>: -

कोड को टिप्पणी करें

<%# WRONG %>
Hi, Mr. <% puts "Frodo" %>

रेल डिफ़ॉल्ट रूप से stdlib के ईआरबी का उपयोग नहीं करते हैं, यह erubis का उपयोग करता है। स्रोत: github.com/rails/rails/issues/16766#issuecomment-54148778 , एक्शन व्यू के जेम्सस्पेक , इसे लिखते समय मैंने मर्ज अनुरोध स्वीकार किया

उनके बीच व्यवहार अंतर हैं, विशेष रूप से हाइफ़न ऑपरेटर %- और -% काम करते हैं।

दस्तावेज़ीकरण दुर्लभ है, रुबी का ईआरबी प्रारूप "आधिकारिक तौर पर" कहां परिभाषित किया गया है? तो क्या अनुभवजन्य निष्कर्ष हैं।

सभी परीक्षण मानते हैं:

require 'erb'
require 'erubis'

जब आप उपयोग कर सकते हैं -

  • trim_mode : आपको इसका उपयोग करने के लिए trim_mode विकल्प को पास करना होगा।
  • erubis: डिफ़ॉल्ट रूप से सक्षम।

उदाहरण:

begin ERB.new("<%= 'a' -%>\nb").result; rescue SyntaxError ; else raise; end
ERB.new("<%= 'a' -%>\nb"  , nil, '-') .result == 'ab'  or raise
Erubis::Eruby.new("<%= 'a' -%>  \n b").result == 'a b' or raise

क्या -% करता है:

  • ईआरबी: अगर यह एक नई लाइन है तो अगले चरित्र को हटा दें।

  • erubis:

    • <% %> (बिना = ) में, - बेकार है क्योंकि <% %> और <% -%> समान हैं। <% %> वर्तमान पंक्ति को हटा देता है अगर इसमें केवल व्हाइटस्पेस होते हैं, और अन्यथा कुछ भी नहीं करता है।

    • <%= -%> (के साथ = ) में:

      • पूरी लाइन को हटा दें यदि इसमें केवल सफेद जगहें हों
      • अन्यथा, यदि टैग से पहले एक गैर-स्थान है, और केवल बाद में सफेद हो, तो बाद में आने वाली सफेद जगहों को हटा दें
      • अन्यथा, टैग के बाद एक गैर-स्थान है: कुछ भी नहीं करें

उदाहरण:

# Remove
ERB.new("a \nb <% 0 -%>\n c", nil, '-').result == "a \nb  c" or raise

# Don't do anything: not followed by newline, but by space:
ERB.new("a\n<% 0 -%> \nc", nil, '-').result == "a\nb \nc" or raise

# Remove the current line because only whitesapaces:
Erubis::Eruby.new(" <% 0 %> \nb").result == 'b' or raise

# Same as above, thus useless because longer.
Erubis::Eruby.new(" <% 0 -%> \nb").result == 'b' or raise

# Don't do anything because line not empty.
Erubis::Eruby.new("a <% 0 %> \nb").result == "a  \nb" or raise
Erubis::Eruby.new(" <% 0 %> a\nb").result == "  a\nb" or raise
Erubis::Eruby.new(" <% 0 -%> a\nb").result == "  a\nb" or raise

# Don't remove the current line because of `=`:
Erubis::Eruby.new(" <%= 0 %> \nb").result == " 0 \nb" or raise

# Remove the current line even with `=`:
Erubis::Eruby.new(" <%= 0 -%> \nb").result == " 0b"   or raise

# Remove forward only because of `-` and non space before:
Erubis::Eruby.new("a <%= 0 -%> \nb").result == "a 0b"   or raise

# Don't do anything because non-whitespace forward:
Erubis::Eruby.new(" <%= 0 -%> a\nb").result == " 0 a\nb"   or raise

क्या %- करता है:

  • ईआरबी: टैग से पहले और पिछली न्यूलाइन के बाद सफेद जगहों को हटा दें, लेकिन केवल तभी जब केवल सफेद जगहें हों।

  • erubis: बेकार क्योंकि <%- %> <% %> (बिना = ) के समान है, और इसका उपयोग नहीं किया जा सकता है = जो एकमात्र मामला है -% उपयोगी हो सकता है। तो इसका कभी भी उपयोग न करें।

उदाहरण:

# Remove
ERB.new("a \n  <%- 0 %> b\n c", nil, '-').result == "a \n b\n c" or raise

# b is not whitespace: do nothing:
ERB.new("a \nb  <%- 0 %> c\n d", nil, '-').result == "a \nb   c\n d" or raise

क्या %- और -% एक साथ करते हैं

दोनों प्रभावों का सटीक संयोजन अलग से।







erb