Jaka jest różnica między <%, <%=, <%# i - % > w ERB w Rails?
Czy ktoś może opisać użycie następujących znaków, które są używane w pliku ERB:
<% %>
<%= %>
<% -%>
<%# %>
Jaki jest użytek z każdego z nich ?
7 answers
<% %>
Wykonuje kod ruby w nawiasach.
<%= %>
Wypisuje coś do pliku erb.
<% -%>
Unika łamania linii po wyrażeniu.
<%# %>
Komentuje kod w nawiasach; nie jest wysyłany do Klienta (w przeciwieństwie do komentarzy HTML).
Odwiedź Ruby Doc aby uzyskać więcej informacji o ERB.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-02-27 20:51:37
<% %>
i <%- and -%>
są dla dowolnego kodu Ruby, ale nie wypisują wyników (np. poleceń if). te dwa są takie same.
<%= %>
jest do wyprowadzania wyników kodu Ruby
<%# %>
is an ERB comment
Oto dobry przewodnik: http://api.rubyonrails.org/classes/ActionView/Base.html
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-09-02 10:09:21
Rails nie używa , Nie używa ERB stdlib domyślnie używa erubis }. Źródło: ten komentarz Deva, GEMSPEC ActionView, zaakceptowałem prośbę o scalenie, którą zrobiłem podczas pisania tego .
Istnieją między nimiróżnice w zachowaniu, w szczególności dotyczące działania operatorów myślników %-
i -%
.
Dokumentacja jest ograniczona, gdzie jest" oficjalnie " zdefiniowany format ERB Rubiego? więc to, co następuje, to wnioski empiryczne.
Wszystkie testy zakładają:
require 'erb'
require 'erubis'
Kiedy można użyć -
- ERB: musisz przejść
-
dotrim_mode
opcjaERB.new
aby go użyć. - erubis: domyślnie włączone.
Przykłady:
begin ERB.new("<%= 'a' -%>\nb").result; rescue SyntaxError ; else raise; end
ERB.new("<%= 'a' -%>\nb" , nil, '-') .result == 'ab' or raise
Erubis::Eruby.new("<%= 'a' -%> \n b").result == 'a b' or raise
Co -%
robi:
ERB: usuwa następny znak, jeśli jest to nowy wiersz.
-
Erubis:
W
<% %>
(BEZ=
),-
jest bezużyteczny, ponieważ<% %>
i<% -%>
są takie same.<% %>
usuwa bieżącą linię, jeśli zawiera tylko spacje i nie robi nic innego.-
W
<%= -%>
(z=
):- usuń całą linię, jeśli zawiera tylko spacje
- w przeciwnym razie, jeśli przed znacznikiem jest spacja, a po nim tylko whitesapces, Usuń białe znaki, które pojawiają się po
- else, there is a non-space after the tag: do nic
Przykłady:
# Remove
ERB.new("a \nb <% 0 -%>\n c", nil, '-').result == "a \nb c" or raise
# Don't do anything: not followed by newline, but by space:
ERB.new("a\n<% 0 -%> \nc", nil, '-').result == "a\nb \nc" or raise
# Remove the current line because only whitesapaces:
Erubis::Eruby.new(" <% 0 %> \nb").result == 'b' or raise
# Same as above, thus useless because longer.
Erubis::Eruby.new(" <% 0 -%> \nb").result == 'b' or raise
# Don't do anything because line not empty.
Erubis::Eruby.new("a <% 0 %> \nb").result == "a \nb" or raise
Erubis::Eruby.new(" <% 0 %> a\nb").result == " a\nb" or raise
Erubis::Eruby.new(" <% 0 -%> a\nb").result == " a\nb" or raise
# Don't remove the current line because of `=`:
Erubis::Eruby.new(" <%= 0 %> \nb").result == " 0 \nb" or raise
# Remove the current line even with `=`:
Erubis::Eruby.new(" <%= 0 -%> \nb").result == " 0b" or raise
# Remove forward only because of `-` and non space before:
Erubis::Eruby.new("a <%= 0 -%> \nb").result == "a 0b" or raise
# Don't do anything because non-whitespace forward:
Erubis::Eruby.new(" <%= 0 -%> a\nb").result == " 0 a\nb" or raise
Co %-
robi:
ERB: usuwa białe spacje przed znacznikiem i po poprzednich znakach nowej linii, ale tylko wtedy, gdy są tylko białe spacje przed.
Erubis: bezużyteczny, ponieważ
<%- %>
jest tym samym co<% %>
(BEZ=
), a to nie może być użyte z=
, co jest jedynym przypadkiem, w którym-%
może być użyteczne. Więc nigdy nie używaj to.
Przykłady:
# Remove
ERB.new("a \n <%- 0 %> b\n c", nil, '-').result == "a \n b\n c" or raise
# b is not whitespace: do nothing:
ERB.new("a \nb <%- 0 %> c\n d", nil, '-').result == "a \nb c\n d" or raise
Co %-
i -%
robią razem
Dokładna kombinacja obu efektów osobno.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:02:48
Dodałem <%%
dosłowny ogranicznik znaczników jako odpowiedź na to pytanie z powodu jego zaciemnienia. Spowoduje to, że erb nie będzie interpretował <%
części znacznika, która jest niezbędna dla aplikacji js, takich jak wyświetlanie wykresu.podpowiedzi js itp.
Wszystko o ERB można znaleźć tutaj: https://docs.puppet.com/puppet/latest/reference/lang_template_erb.html#tags
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-06-09 15:09:56
Są one używane w ruby on rails :-
:-
Znaczniki są używane do wykonywania kodu Ruby, który nie zwraca niczego, takiego jak warunki, pętle lub bloki. Eg: -
<h1>Names of all the people</h1>
<% @people.each do |person| %>
Name: <%= person.name %><br>
<% end %>
:-
Użyj do wyświetlenia zawartości .
Name: <%= person.name %><br>
:-
Rails rozszerza ERB, dzięki czemu można tłumić znak nowej linii, dodając myślnik końcowy do znaczników w szablonach Rails
:-
Skomentuj kod
<%# WRONG %>
Hi, Mr. <% puts "Frodo" %>
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-11-12 14:30:21
-
<% %>
: wykonuje kod ruby -
<%= %>
: drukuje do pliku Erb. Or browser -
<% -%>
: unika łamania linii po wyrażeniu. -
<%# %>
: ERB komentarz
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-08-23 05:31:35
<% %>
wykonuje tam kod, ale nie wypisuje wyniku, np.:
Możemy go użyć do if else w pliku erb.
<% temp = 1 %>
<% if temp == 1%>
temp is 1
<% else %>
temp is not 1
<%end%>
Wydrukuje temp is 1
<%= %>
wykonuje kod, a także wypisuje wyjście, np.:
Możemy wydrukować wartość zmiennej rails.
<% temp = 1 %>
<%= temp %>
Wydrukuje 1
<% -%>
nie ma to znaczenia, ponieważ nie drukuje niczego, -%>
ma tylko sens z <%= -%>
, uniknie to Nowego Kolejka
<%# %>
skomentuje napisany w tym kodzie kod.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-05-15 10:21:03