Блокировать комментарии в шаблонах html.erb в рельсах - PullRequest
110 голосов
/ 27 июня 2010

Как вы закомментируете html, смешанный с кодом ruby?

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

В jsp все очень просто: <%-- ... --%>, но я не могу найти какой-либо краткий вариант в rails.

Простые html комментарии <!-- ... --> не работают: код ruby ​​все еще выполняется и выдает ошибки.

Есть опция для использования if false с html-комментариями, но она довольно многословна, не говоря уже о IDE, ее не поддерживающей.

Есть также опция от чистого ruby, что удивительноработает.

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

В целом все нормально, за исключением того, что он многословный, странно выглядящий и ни один из ruby ​​IDE, который я знаю, не поддерживает его (да, я люблю комментировать / комментировать одним нажатием клавиши).

Мне любопытно, есть ли "официальные" лица, занимающиеся этим на рельсах?

Спасибо!

Ответы [ 15 ]

1 голос
/ 27 июня 2010

Вы должны иметь в виду, где код выполняется. Комментарии в стиле Ruby работают, потому что код Ruby выполняется на сервере перед его передачей в веб-браузер. Это также объясняет, почему HTML-комментарии не работают - Ruby уже был выполнен.

Разве IDE, которую вы используете, не поддерживает создание пользовательских макросов для комментирования блоков кода?

0 голосов
/ 09 июля 2018

Используйте HEREDOC с именем comment

Плюсы:

  • Понятно, что это комментарий
  • Работает с тегами 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 строки ?. Я не знаю, почему открывающий тег erb важен, но это так! (если вы не использовали какие-либо теги erb в комментарии).

<%      
COMMENT
%>
0 голосов
/ 24 мая 2018

Вы можете использовать как <% if false%>, так и комментарии HTML одновременно:

<%if false%><--

stuff to comment out

--><%end%>

Преимущества:

  • Код Ruby не являетсявыполнено

  • Закомментированный блок имеет серый цвет в IDE

  • Намерение очевидно для других разработчиков

0 голосов
/ 03 ноября 2016

Единственное приемлемое решение, которое я когда-либо нашел для этой непосильной проблемы, заключалось в том, чтобы поместить пробел в "<% =", чтобы он больше не регистрировался как код ruby, а затем закомментировать весь блок с комментариями html </p>

Как это:

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

Да, добавление пробелов раздражает. Но это наименее раздражает из всех решений, которые я когда-либо видел.

0 голосов
/ 08 февраля 2016

Это единственный, кто работал на меня.

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