ब्लॉक में html.erb टेम्प्लेट में टिप्पणियों को ब्लॉक करें


120

आप रूबी कोड के साथ HTML मिश्रित कैसे टिप्पणी करते हैं?

some text <% ... %> more text <%= ... %>
something else
<% ... %>

Jsp में यह वास्तविक सरल है: <%-- ... --%>लेकिन मैं रेल में कोई संक्षिप्त विकल्प नहीं खोज पा रहा हूँ।

सरल HTML टिप्पणियां <!-- ... -->काम नहीं करती हैं: रूबी कोड अभी भी निष्पादित किया गया है और त्रुटियों को चिल्लाता है।

if falseHTML टिप्पणियों के साथ उपयोग करने का एक विकल्प है , लेकिन यह काफी क्रियात्मक है, आईडीई का उल्लेख नहीं करने के लिए इसका समर्थन नहीं करता है।

शुद्ध रूबी से आने वाला एक विकल्प भी है, जो आश्चर्यजनक रूप से काम करता है।

<%
=begin %>
... html and ruby code goes here
<%
=end %>

यह आम तौर पर ठीक है, सिवाय इसके कि यह क्रियात्मक, अजीब-दिखने वाला और रूबी आईडीई में से कोई भी नहीं है जो मुझे पता है कि यह समर्थन करता है (हां, मुझे एक कीस्ट्रोक के साथ टिप्पणी / टिप्पणी करना पसंद है)।

मैं उत्सुक हूं, क्या रेल का कोई 'अधिकारी' है?

धन्यवाद!

जवाबों:


115

मैं एक समाधान के रूप में नहीं गिना जा सकता है, लेकिन शायद एक के बीच कबाड़ को संलग्न करना

<% if false %>
   ...
<% end %>

या यदि आप थोड़ा गंदा महसूस करते हैं, तो एक सहायक बनाएं जो बस कुछ नहीं का उत्पादन करता है।

मुझे इसकी कभी आवश्यकता नहीं है, लेकिन मुझे लगता है कि इसके लिए कोई समाधान नहीं है।


@ बोलो मुझे यकीन नहीं है कि आपने अपनी टिप्पणी मुझे क्यों निर्देशित की लेकिन आप बहुत सही <%= false %>हैं काम नहीं करेंगे। आपको प्रदान किए गए समाधान की कोशिश करनी चाहिए, जो <% if false %>कि = साइन के बिना काम करेगा
jamesc

@jamesc आपकी प्रतिक्रिया देखने से पहले आपकी टिप्पणी हटा दी गई थी। किसी ने आपकी टिप्पणी को हटा दिया जहां आपने उपयोग करने के लिए कहा था <%# if false %>
च्लोए

162

एकल लाइनों पर टिप्पणी करने के लिए इसका उपयोग करें:

<%# your_ruby_code %>

कई लाइनों के लिए,

<% 
=begin %>  <% ruby_code %>
<% 
=end %>

आपने जो कहा वह काम करेगा।


2
मुझे पता है कि अगर मुझे कुछ आसान है तो मुझे दिलचस्पी होगी :)
निकिता रियाब

2
= शुरू करें मुझे लगता है कि शुरुआत - अंत सब कुछ होगा = अंत # आप मेरी टिप्पणी को पूरी तरह से टिप्पणी के रूप में अनदेखा कर सकते हैं: पी
गारफील्ड

3
यह काम करता है अगर = जवाब की तरह नई लाइन की शुरुआत में है
dhaval

क्या होगा अगर यह इस तरह है <% =%>? हैश कहाँ जाएगा - उससे पहले या बाद में बराबरी के संकेत पर?
BKSpurgeon

उफ़, मल्टीलाइन कोड के साथ एक टिप्पणी जोड़ने की कोशिश की। इसके बजाय एक उत्तर पोस्ट करेंगे।
विगोगो

29

=beginदृष्टिकोण कष्टप्रद वजह से है:

  1. यह मिश्रित HTML और रूबी (या सिर्फ HTML) के लिए काम नहीं करता है जो कि एक पंक्ति में है
  2. यह टाइप करने के लिए कष्टप्रद है

<% if false %>दृष्टिकोण काम करता है, लेकिन यह अजीब लग रहा है और किसी और को जो अपने कोड को देखती है अपने इरादों के बारे में एक संकेत नहीं देता है।

मेरा समाधान इस प्रकार है:

में application_helper.rb, एक विधि जोड़ें:

def comment
end

तब आपके विचार टेम्पलेट में, आप कह सकते हैं:

<% comment do %>Some stuff that won't be rendered...<% end %>

यह काम करता है क्योंकि कोई भी रूबी विधि ब्लॉक ले सकती है, लेकिन यदि आपकी पद्धति में ए शामिल नहीं है, तो चुपचाप पारित-ब्लॉक को अनदेखा कर देगा yield


3
आप इसे <% टिप्पणी करते%> ... <% टिप्पणी अंत%> के रूप में भी लिख सकते हैं। मैंने इस वाक्यविन्यास को उदात्त पाठ में जोड़ा है ताकि यह एक वास्तविक टिप्पणी की तरह भी दिखाई दे।
मैरियानो कैवलो

1
लवली समाधान !! एक सुधार: इसे निष्क्रिय करने के लिए टिप्पणी कोड एक हैक की तरह है, इसलिए विधि को कॉल करें ignoreया disableहमें एक पूर्ण रूप से शब्दार्थ समाधान मिलता है:<% ignore do %>…<% end %>
tanius


7

टेम्प्लेट में टिप्पणियों को ब्लॉक करने के लिए, मेरे टेक्स्ट एडिटर (कोमोडो) को @ गारफील्ड की सिफारिश पर यह भिन्नता कम से कम अप्रिय लगती है:

<%# A long multiline comment in a rails template ...
  # line 2
  # and so on ... 
  # %>

6

ओपनिंग टैग में = साइन करने से पहले erb टैग्स पर टिप्पणी करने के लिए रूबी कमेंट हैश सिंबल का उपयोग करें

<p>
 This is some text I want to keep
 <%= @some_object.some_attribute %>
</p>
<p>
  I want to keep this text but comment out the erb tag
  <%#= @some_object.another_attribute %>
</p>
<!--
<p>
  I want all of this text commented out including the erb tag
  <%#= @some_object.some_attribute %>
</p>
-->
<!--
<p>
 I just want this html commented out but I want to keep the erb tag
 <%= @some_object.some_attribute %>
</p>
-->

जहां तक ​​मैं समझता हूं, वह एक बहुस्तरीय टिप्पणी-आउट समाधान की तलाश कर रहा है: यदि मेरे पास एन लाइनों का एक ब्लॉक है, तो मैं बस शीर्ष और नीचे (या शायद एक जोड़े) पर एक पंक्ति जोड़ने में सक्षम होना चाहता हूं और यह है काम। मैं पूरे ब्लॉक को संपादित नहीं करना चाहता।
dionyziz

6

चूंकि आप <% %>एक रूबी ब्लॉक लगाने के लिए उपयोग कर सकते हैं , यह निश्चित रूप से टिप्पणियों में डालने के लिए उपयोग किया जा सकता है।

एक सरल और सुरुचिपूर्ण समाधान की तरह दिखेगा ...

<%
# See! I am a Ruby Comment
# And I am multi-line
# I look like a recognizable ruby comment block too
# and not so complex
# The only drawback with me is the Hash symbol you have to repeat
# But it's the norm, isn't it?
%>

6
यह काम नहीं करता है। ब्लॉक टिप्पणी के अंदर कोई भी रूबी टैग बाहरी ब्लॉक को बंद कर देगा।
होविस बिडल

4

के बाद = शुरू करने के लिए आपको%> लगाने की आवश्यकता नहीं है

<%
=begin

code code code code code code 
code code code code code code 
code code code code code code 
code code code code code code 

=end %>

2

पिछले जवाबों में से कुछ के लिए सिर्फ एक परिशिष्ट। मैंने पाया = शुरू / = अंत समाधान सबसे उपयोगी है, लेकिन सुंदरता के लिए मैं इसे इस तरह लिखता हूं:

<%
=begin
  <p>HTML will be ignored</p>
  <%= 'and so will ruby' %>
  <p>
    <%= 'plus the whole block will be greyed in editor' %>
  </p>
=end
%>

ध्यान दें कि जब तक सब कुछ अनदेखा किया जाता है के बाद से =endबंद करने के लिए कोई जरूरत नहीं है =beginके साथ टैग %>या खोलने के =endसाथ टैग <%(जो भी पहले के एक जवाब में बताया गया है)

मुझे मिश्रित रूबी और एचटीएमएल कोड के एक खंड को पूरी तरह से बहिष्कृत करने का सबसे सुरुचिपूर्ण समाधान मिला और यह मेरे संपादक के रूप में अच्छी तरह से विरोध के रूप में सामने आया है। <% if false %> समाधान के । केवल दोष यह है कि है =beginऔर =endरेखा के बहुत शुरुआत में रखा जाना चाहिए ..


1
मुझे यह त्रुटि मिल रही है: "एम्बेडेड दस्तावेज़ फ़ाइल के अंत में मिलता है"
किरन एंड्रयूज

2

HEREDOC नामक टिप्पणी का उपयोग करें

पेशेवरों:

  • आत्म-व्याख्यात्मक कि यह एक टिप्पणी है
  • Erb और HTML टैग्स के लिए काम करता है
  • ठीक सिंटैक्स हाइलाइटिंग है (एक लंबी स्ट्रिंग के रूप में)

विपक्ष:

  • अजीब 3 लाइन क्लोजिंग सिंटैक्स
  • कोई कीबोर्ड शॉर्टकट नहीं

कोड:

उद्घाटन टैग हो सकता है

<% <<-COMMENT %>

the above closing erb tag is just for looks (to match the end),
but don't put anything else there, it may show up on the page

या

<%
<<-COMMENT
%>

यहां कुछ भी ब्राउज़र में नहीं चलेगा या दिखाई नहीं देगा

<P>
    this will not be displayed in the browser
    <strong> even in the developer's tools </strong>
</p>

<% 1_000_000_000_000.times do |count| %>

for the <%= count %>'th time, this won't run a trillion times,
this is all just a string

all of these %>, <%, <% end %>, end, do, <!--, won't cause any issues.

but the below opening erb tag is important (if you used any erb tags in the comment).
I have no clue why?

समापन टैग

हाँ, यह 3 लाइनों 3 की जरूरत है। मुझे नहीं पता कि ओपनिंग एरब टैग क्यों महत्वपूर्ण है लेकिन यह है! (जब तक आपने टिप्पणी में किसी एरब टैग का उपयोग नहीं किया है)।

<%      
COMMENT
%>

1

आपको यह ध्यान रखना होगा कि कोड कहाँ निष्पादित किया गया है। रूबी-शैली की टिप्पणियां काम करती हैं क्योंकि वेब ब्राउज़र को सेवा देने से पहले सर्वर पर रूबी कोड निष्पादित किया जाता है। यह भी बताता है कि HTML टिप्पणियां काम क्यों नहीं करती हैं - रूबी को पहले ही निष्पादित किया जा चुका है।

क्या आईडीई नहीं है जो आप कोड के ब्लॉक को टिप्पणी करने के लिए कस्टम मैक्रोज़ बनाने के लिए समर्थन का उपयोग कर रहे हैं?


1) आप सही कह रहे हैं, jsp टिप्पणियों में थोड़ा अलग प्रारूप है, मैंने पोस्ट को अपडेट कर दिया है। 2) मुझे IDEA या Netbeans में ऐसा कुछ नहीं मिल रहा है। क्या आपके पास यह कहने में कोई खास आईडीई है?
निकिता रायबाक

1
नहीं, मैंने नहीं किया। निजी तौर पर, मैं रेल परियोजनाओं के लिए एक आईडीई का उपयोग नहीं करता हूं।
जॉन टॉपले

1

उदात्त पाठ के ब्लॉक टिप्पणी शॉर्टकट ctrl+shift+/नोटिस कि क्या आपने सामान्य HTML या एक एरब टैग का चयन किया है <!---या उसके <% =begin %>अनुसार या तो डालता है ।


हाँ, लेकिन यह अभी भी HTML और रूबी दोनों पर टिप्पणी नहीं करेगा ।
Adamantish

हम्म ... एक कस्टम प्लगइन के लिए अच्छे कारण की तरह लगता है। शायद स्टॉपगैप के रूप में, आप ब्लॉक के भीतर ctrl+dहर एरब टैग की शुरुआत को बहु-चयन करने के लिए दबा सकते हैं <%और फिर हिट कर सकते हैं ctrl+shift+/, फिर पूरे ब्लॉक के लिए HTML को टिप्पणी करने के लिए इसे एक बार फिर से हिट करें।
आयन

1

यदि आप एक ही समय में झूठे%> और HTML टिप्पणियों दोनों का उपयोग कर सकते हैं:

<%if false%><--

stuff to comment out

--><%end%>

लाभ हैं:

  • रूबी कोड निष्पादित नहीं किया गया है

  • टिप्पणी किए गए ब्लॉक में IDE में ग्रे रंग है

  • अन्य डेवलपर्स के लिए इरादा स्पष्ट है



0
<% %w(
  <span title="<%= title %>">hello</span>
) %>

मुझे आशा है कि मैंने अभी आपके दिमाग को उड़ा दिया है!


-4

एकमात्र स्वीकार्य समाधान जो मैंने कभी इस बैक-ब्रेकिंग समस्या को पाया था, उसे "<% =" के भीतर जगह देना था, ताकि अब इसे रूबी कोड के रूप में पंजीकृत न किया जा सके, और फिर html टिप्पणियों के साथ पूरे ब्लॉक पर टिप्पणी करें।

ऐशे ही:

<!--
<p>
  < %= @some_object.some_attribute %>
</p>
<p>
  < %= @some_object.another_attribute %>
</p>
<p>
  < %= @some_object.some_attribute %>
</p>
<p>
  < %= @some_object.some_attribute %>
</p>
-->

हाँ, रिक्त स्थान जोड़ना कष्टप्रद है। लेकिन यह मेरे द्वारा देखे गए सभी समाधानों में से सबसे कम कष्टप्रद है।


1
आप #दस्तावेज़ में रूबी भेजने के बजाय बस एक ... जोड़ सकते हैं ।
अधिकतम
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.