Rubyコードと混合したhtmlをコメントアウトするにはどうすればよいですか?
some text <% ... %> more text <%= ... %>
something else
<% ... %>
Jspでは<%-- ... --%>
ですが、Railsには簡潔なオプションがありません。
単純なhtmlコメント<!-- ... -->
は機能しません:Rubyコードはまだ実行され、エラーが叫ばれます。
HTMLコメントでif false
を使用するオプションがありますが、IDEがサポートしていないことは言うまでもなく、非常に冗長です。
純粋なRubyからのオプションもありますが、これは驚くほど機能します。
<%
=begin %>
... html and Ruby code goes here
<%
=end %>
冗長で奇妙に見え、私が知っているRuby IDEのどれもそれをサポートしていないことを除いて、それは一般に大丈夫です(ええ、私は1つのキーストロークでコメント/コメントアウトしたいです)。
私は興味があります、レールでこれを行う「公式」はありますか?
ありがとう!
私は解決策としては数えませんが、おそらく
<% if false %>
...
<% end %>
または、少し汚いと感じた場合は、単に何も出力しないヘルパーを作成します。
私はそれを決して必要としませんでした、しかし、私はこれのためにすぐに使える解決策がないようにつまずきました。
これを使用して、単一行にコメントを付けます。
<%# your_Ruby_code %>
複数行の場合、
<%
=begin %> <% Ruby_code %>
<%
=end %>
あなたが言ったことはうまくいくでしょう。
=begin
アプローチは面倒です:
<% if false %>
アプローチは機能しますが、奇妙に見え、コードを見る他の人にあなたの意図についてのヒントを与えません。
私の解決策は次のとおりです。
application_helper.rb
で、次のようにメソッドを追加します。
def comment
end
次に、ビューテンプレートで次のように言うことができます。
<% comment do %>Some stuff that won't be rendered...<% end %>
これは、任意のRubyメソッドがブロックを取ることができるため機能しますが、メソッドにyield
が含まれていない場合、渡されたブロックを静かに無視します。
<%#=
...commented
multiline
block...
%>
テンプレート内のブロックコメントの場合、私のテキストエディター(Komodo)は @ Garfieldの推奨 もっとも不快なものについてこのバリエーションを見つけます。
<%# A long multiline comment in a Rails template ...
# line 2
# and so on ...
# %>
Erbタグをコメントアウトするには、開始タグの=記号の前にRubyコメントハッシュ記号を使用します
<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>
-->
<% %>
を使用してRubyブロックを配置できるため、コメントを挿入するために確実に使用できます。
よりシンプルでエレガントなソリューションは次のようになります...
<%
# 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?
%>
= 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 %>
これまでの回答の一部への補遺です。 = 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
で<%
タグを開く必要もないことに注意してください。以前の回答でも指摘されていました)
これは、Rubyとhtmlコードの混合ブロックを完全にアウトカムする最もエレガントなソリューションであり、<% if false %>
ソリューションとは対照的に、エディターでもグレー表示されることがわかりました。唯一の欠点は、=begin
と=end
を行の最初に配置する必要があることです。
コードが実行される場所を覚えておく必要があります。 RubyコードがWebブラウザーに提供される前にサーバーで実行されるため、Rubyスタイルのコメントが機能します。これは、HTMLコメントが機能しない理由も説明します。Rubyはすでに実行されています。
使用しているIDEは、コードのブロックをコメントアウトするためのカスタムマクロの作成をサポートしていませんか?
Sublime Textのブロックコメントショートカット ctrl+shift+/ 通常のHTMLまたはErbタグのどちらを選択したかがわかり、それに応じて<!---
または<% =begin %>
のいずれかが配置されます。
開始タグは
<% <<-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
%>
これは私のために働いた唯一のものです。
<%
=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 %>
<%if false%>とHTMLコメントの両方を同時に使用できます。
<%if false%><--
stuff to comment out
--><%end%>
利点は次のとおりです。
Rubyコードは実行されません
IDEでコメント化されたブロックは灰色になります
他の開発者にとって意図は明らかです