Блокировать комментарии в html.erb шаблонах в рельсах
Как вы комментируете html, смешанный с кодом ruby?
some text <% ... %> more text <%= ... %>
something else
<% ... %>
В jsp это просто: <%-- ... --%>
, но я не могу найти какой-либо краткий вариант в rails.
Простые html-комментарии <!-- ... -->
не работают: код ruby все еще выполняется и кричит ошибки.
Есть возможность использовать if false
с комментариями html, но он довольно многословный, не говоря уже о том, что IDE не поддерживает его.
Также есть опция, исходящая от чистого рубина, что удивительно работает.
<%
=begin %>
... html and ruby code goes here
<%
=end %>
Как правило, это хорошо, за исключением того, что он многословный, странный и ни один из Ruby IDE, которые я знаю, не поддерживает его (да, мне нравится комментировать/комментировать с одним нажатием клавиши).
Мне любопытно, есть ли какие-либо "официальные" делания этого в рельсах?
Спасибо!
Ответы
Ответ 1
Я бы не считал решением, но, возможно, включил кусок между
<% if false %>
...
<% end %>
или если вы чувствуете себя немного грязным, создайте помощника, который просто ничего не выводит.
Я никогда не нуждался в этом, но я споткнулся, похоже, для этого не существует готового решения.
Ответ 2
Используйте это для комментариев отдельных строк:
<%# your_ruby_code %>
Для нескольких строк
<%
=begin %> <% ruby_code %>
<%
=end %>
То, что вы сказали, будет работать.
Ответ 3
Подход =begin
раздражает, потому что:
- Это не работает для смешанных HTML и Ruby (или просто HTML), которые на одной строке
- Досадно печатать
Подход <% if false %>
работает, но он выглядит странно и не дает никому другому, кто смотрит на ваш код, намек на ваши намерения.
Мое решение таково:
В application_helper.rb
добавьте метод так:
def comment
end
Затем в вашем шаблоне просмотра вы можете сказать:
<% comment do %>Some stuff that won't be rendered...<% end %>
Это работает, потому что любой метод Ruby может принимать блок, но будет молча игнорировать переданный блок, если ваш метод не включает yield
.
Ответ 4
Поскольку вы можете использовать <% %>
для размещения блока 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 the norm, isn't it?
%>
Ответ 5
Для комментариев блоков в шаблонах мой текстовый редактор (Komodo) находит этот вариант в @Garfield рекомендации наименее неприятным:
<%# A long multiline comment in a rails template ...
# line 2
# and so on ...
# %>
Ответ 6
<%#=
...commented
multiline
block...
%>
Ответ 7
Чтобы прокомментировать метки 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>
-->
Ответ 8
После начала = вам не нужно ставить% >
<%
=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 %>
Ответ 9
Вы должны помнить, где выполняется код. Комментарии в стиле Ruby работают, потому что код Ruby выполняется на сервере, прежде чем он будет передан в веб-браузер. Это также объясняет, почему комментарии HTML не работают — Ruby уже выполнен.
Не использует ли среда IDE создание пользовательских макросов для комментирования блоков кода?
Ответ 10
Световой ярлык комментариев Sublime Text block ctrl+shift+/ уведомляет, выбрали ли вы обычный HTML или тег Erb и соответственно установите <!---
или <%
=begin %>
.
Ответ 11
Это единственный, кто работал у меня.
<%
=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 %>
Ответ 12
Единственное приемлемое решение, которое я когда-либо встречал в этой обратной проблеме, заключалось в том, чтобы помещать пробел внутри "<% =", чтобы он больше не регистрировался как код ruby, а затем комментировал весь блок с помощью комментариев 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>
-->
Да, добавление пробелов вызывает раздражение. Но это наименее раздражает все решения, которые я еще видел.