125

ルビーコードと混合されたhtmlをどのようにコメントアウトしますか?

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

jspではそれは本当に簡単です:<%-- ... --%>、しかし私はレールに簡潔なオプションを見つけることができません。

単純なhtmlコメント<!-- ... -->は機能しません。rubyコードは引き続き実行され、エラーを叫びます。

HTMLコメントで使用するオプションがありますがif false、IDEがサポートしていないことは言うまでもなく、非常に冗長です。

驚くべきことに機能する純粋なルビーから来るオプションもあります。

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

冗長で奇妙な外観であり、私が知っているルビーIDEのどれもそれをサポートしていないことを除いて、それは一般的に問題ありません(うん、私は1回のキーストロークでコメント/コメントアウトするのが好きです)。

私は興味があります、これをレールで行う「公式」はありますか?

ありがとう!

4

17 に答える 17

172

これを使用して、1行にコメントします。

<%# your_ruby_code %>

複数行の場合、

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

あなたが言ったことはうまくいくでしょう。

于 2010-06-27T16:53:42.077 に答える
122

私は解決策として数えませんが、おそらくチャンクを

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

または、少し汚れていると感じた場合は、何も出力しないヘルパーを作成します。

私はそれを必要としたことはありませんが、これに対するすぐに使える解決策がないようです。

于 2010-06-27T18:12:58.773 に答える
35

この=beginアプローチは次の理由で面倒です。

  1. 1行にある混合HTMLとRuby(または単にHTML)では機能しません
  2. 入力するのは面倒です

この<% if false %>アプローチは機能しますが、奇妙に見え、コードを見る他の人にあなたの意図についてのヒントを与えることはありません。

私の解決策は次のとおりです。

application_helper.rb、次のようなメソッドを追加します。

def comment
end

次に、ビューテンプレートで、次のように言うことができます。

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

これは、Rubyメソッドがブロックを取ることができるため機能しますが、メソッドにが含まれていない場合、渡されたブロックをサイレントに無視しますyield

于 2014-06-10T00:29:01.377 に答える
12
<%#=

...commented
multiline
block...

%>
于 2014-06-09T10:07:03.567 に答える
8

テンプレートのブロックコメントについては、私のテキストエディタ(Komodo)は、@Garfieldの推奨事項に基づいてこのバリエーションを最も不快ではないと感じています。

<%# A long multiline comment in a rails template ...
  # line 2
  # and so on ... 
  # %>
于 2013-03-21T15:40:15.757 に答える
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>
-->
于 2011-07-23T16:28:46.803 に答える
5

ルビーブロックを入れるのに使えるので<% %>、確かにコメントを入れるのに使えます。

よりシンプルでエレガントなソリューションは次のようになります...

<%
# 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?
%>
于 2014-08-30T12:20:12.940 に答える
4

= beginの後に、%>を入力する必要はありません。

<%
=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 %>
于 2016-02-15T13:39:02.743 に答える
3

以前の回答のいくつかへの単なる補遺。= begin / = endソリューションが最も便利だと思いましたが、美しさのために次のように記述しています。

<%
=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<%

これは、ルビーとhtmlの混合コードのブロックを完全にアウトコメントし、ソリューションとは対照的に、エディターでもグレー表示にするための最も洗練されたソリューションであることがわかりました<% if false %>。唯一の欠点は、それ=begin=end行の最初に配置する必要があることです。

于 2018-05-22T13:00:43.993 に答える
3

コメントと呼ばれるヒアドキュメントを使用する

長所:

  • これがコメントであることは自明です
  • erbおよびHTMLタグで機能します
  • 構文の強調表示はOKです(1つの長い文字列として)

短所:

  • 奇妙な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行にする必要があります。オープニングerbタグが重要な理由はわかりませんが、重要です。(コメントでerbタグを使用しなかった場合を除く)。

<%      
COMMENT
%>
于 2018-07-08T21:32:53.973 に答える
2

<%if false%>とHTMLコメントの両方を同時に使用できます。

<%if false%><--

stuff to comment out

--><%end%>

利点は次のとおりです。

  • Rubyコードは実行されません

  • コメントされたブロックはIDEで灰色になります

  • 他の開発者にとってその意図は明らかです

于 2018-05-23T23:08:37.970 に答える
1

コードが実行される場所を覚えておく必要があります。Rubyコードは、Webブラウザーに提供される前にサーバー上で実行されるため、Rubyスタイルのコメントが機能します。これは、HTMLコメントが機能しない理由も説明しています。Rubyはすでに実行されています。

使用しているIDEは、コードのブロックをコメントアウトするためのカスタムマクロの作成をサポートしていませんか?

于 2010-06-27T16:02:20.123 に答える
1

Sublime Textのブロックコメントショートカットctrl+shift+/は、通常のHTMLまたはErbタグのどちらを選択したかを認識し、<!---または<% =begin %>それに応じて配置します。

于 2012-12-11T21:46:54.540 に答える
0

これは私のために働いた唯一の人です。

<%
=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 %>

于 2016-02-08T13:38:17.180 に答える
0
<% %w(
  <span title="<%= title %>">hello</span>
) %>

私はあなたの心を吹き飛ばしたことを願っています!

于 2020-07-16T20:58:25.450 に答える
0

一方通行

これが私の好みの方法です。


<%# START COMMENTED OUT SECTION %>
<%if false%><-- 

your view code here....

--><%end%>
<%# END COMMENTED OUT SECTION %>

いったいなぜコードに大規模なキャップロック文が必要なのかと言うかもしれません。<%if false%><-- 答えは、何をしているのか、何をしているのかを忘れやすい(または単に知らない)から--><%end%>です。眠い、またはカフェインを含まない開発者は、タイプミスだと思って簡単に削除できますが、これは良くありません。だから私は自分自身や他の開発者に親切にし、それを非常に明白にしようとしています。簡潔でもきれいでもありませんが、非常に実用的で、ほぼ確実です。

2番目の方法

この方法は、次のような場合に最適です。

  • 単純
  • 特異ではない(つまり、通常の形式のルビーを使用する)
  • 表現力:起こっていることの意味を伝えます(誰かがそれが何をしているのかを簡単に理解できます)
  • 最小限

そしてここにあります:

<%#

multiple
lines
commented 
out

%>
于 2020-12-19T05:17:33.077 に答える
-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>
-->

はい、スペースを追加するのは面倒です。しかし、それは私が今まで見たすべての解決策の中で最も迷惑ではありません。

于 2016-11-03T20:15:56.110 に答える