ruby-on-rails - how - render a partial rails
Bloquear comentarios en plantillas html.erb en rieles (14)
Como puede usar <% %>
para poner un bloque de rubí, se puede usar para poner comentarios en él.
Una solución más simple y elegante se vería como ...
<%
# 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?
%>
¿Cómo se comenta un html mezclado con el código ruby?
some text <% ... %> more text <%= ... %>
something else
<% ... %>
En jsp es muy simple: <%-- ... --%>
, pero no puedo encontrar ninguna opción concisa en los rieles.
Los comentarios html simples <!-- ... -->
no funcionan: el código ruby todavía se ejecuta y grita errores.
Hay una opción para usar if false
con los comentarios html, pero es bastante detallado, sin mencionar que IDEs no lo admite.
También hay una opción proveniente del rubí puro, que sorprendentemente funciona.
<%
=begin %>
... html and ruby code goes here
<%
=end %>
En general está bien, excepto que es detallado, raro y ninguno de los IDEs de rubí. Sé que lo soporto (sí, me gusta comentar / comentar con una sola pulsación de tecla).
Tengo curiosidad, ¿hay algún ''oficial'' de hacer esto en los rieles?
¡Gracias!
Debe tener en cuenta dónde se ejecuta el código. Los comentarios de estilo Ruby funcionan porque el código de Ruby se ejecuta en el servidor antes de ser servido en el navegador web. Esto también explica por qué los comentarios HTML no funcionan: el Ruby ya se ejecutó.
¿El IDE que está utilizando no admite la creación de macros personalizadas para comentar bloques de código?
Después = comienza, no necesitas poner%>
<%
=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 %>
El enfoque =begin
es molesto porque:
- No funciona para HTML mezclado y Ruby (o solo HTML) que está en una sola línea
- Es molesto escribir
El enfoque <% if false %>
funciona, pero se ve raro y no le da a nadie más que vea tu código una pista sobre tus intenciones.
Mi solución es la siguiente:
En application_helper.rb
, agregue un método así:
def comment
end
Luego, en su plantilla de vista, puede decir:
<% comment do %>Some stuff that won''t be rendered...<% end %>
Esto funciona porque cualquier método de Ruby puede tomar un bloque, pero ignorará silenciosamente el bloque pasado si su método no incluye un yield
.
El método abreviado de comentario de bloque de Sublime Text ctrl + shift + / se da cuenta si ha seleccionado HTML normal o una etiqueta Erb y coloca <!---
o <% =begin %>
consecuencia.
Este es el único que funcionó para mí.
<%
=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 %>
La única solución aceptable que encontré para este problema fue poner un espacio dentro del "<% =" para que ya no se registre como código ruby, y luego comentar todo el bloque con comentarios html
Me gusta esto:
<!--
<p>
< %= @some_object.some_attribute %>
</p>
<p>
< %= @some_object.another_attribute %>
</p>
<p>
< %= @some_object.some_attribute %>
</p>
<p>
< %= @some_object.some_attribute %>
</p>
-->
Sí, agregar los espacios es molesto. Pero es la menos molesta de todas las soluciones que he visto hasta ahora.
No contaría como una solución, pero quizás encerrando el fragmento entre un
<% if false %>
...
<% end %>
o si te sientes un poco sucio, crea un ayudante que simplemente no genere nada.
Nunca lo he necesitado, pero estoy confundido, parece que no hay una solución lista para usar.
Para comentar las etiquetas erb usa el símbolo de hash de comentario de ruby antes del signo = en la etiqueta de apertura
<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>
-->
Para comentarios de bloque en plantillas, mi editor de texto (Komodo) encuentra esta variación en la recomendación de @Grayfield menos odiosa:
<%# A long multiline comment in a rails template ...
# line 2
# and so on ...
# %>
Puede usar los comentarios de <% if false%> y HTML al mismo tiempo:
<%if false%><--
stuff to comment out
--><%end%>
Los beneficios son:
El código de Ruby no se ejecuta
El bloque comentado tiene color gris en IDE
La intención es obvia para otros desarrolladores
Solo una adición a algunas de las respuestas anteriores. Encontré la solución = begin / = end más útil, pero por el bien de la belleza, la escribo así:
<%
=begin
<p>HTML will be ignored</p>
<%= ''and so will ruby'' %>
<p>
<%= ''plus the whole block will be greyed in editor'' %>
</p>
=end
%>
Tenga en cuenta que dado que todo se ignora hasta el =end
no es necesario cerrar la etiqueta =begin
con %>
o abrir la etiqueta =end
con <%
(que también se ha señalado en una respuesta anterior)
Descubrí que esta es la solución más elegante para superar por completo un bloque de código mixto de ruby y html y también aparece atenuado en mi editor, en contraposición a la solución <% if false %>
. El único inconveniente es que =begin
y =end
deben colocarse al principio de la línea.
Use esto para comentar líneas simples:
<%# your_ruby_code %>
Para líneas múltiples, el
<%
=begin %> <% ruby_code %>
<%
=end %>
Lo que dijiste funcionaría.
<%#=
...commented
multiline
block...
%>