Rails의 ERB에서 <%, <% =, <% # 및-%>의 차이점은 무엇입니까?
ERB 파일에서 사용되는 다음 문자의 사용법을 설명해 주시겠습니까?
<% %>
<%= %>
<% -%>
<%# %>
각각의 사용법은 무엇입니까?
<% %>
대괄호 안에서 루비 코드를 실행합니다.
<%= %>
erb 파일로 무언가를 인쇄합니다.
<% -%>
식 후 줄 바꿈을 피합니다.
<%# %>
괄호 안에 코드를 주석 처리하십시오. HTML 주석이 아닌 클라이언트로 전송되지 않습니다.
ERB에 대한 자세한 정보는 Ruby Doc 을 방문하십시오 .
<% %>
그리고 <%- and -%>
어떤 루비 코드입니다,하지만 출력 결과를 않습니다 (예 : if 문). 둘은 동일합니다.
<%= %>
Ruby 코드의 결과를 출력하기위한 것입니다
<%# %>
ERB 의견입니다
다음은 좋은 안내서입니다. http://api.rubyonrails.org/classes/ActionView/Base.html
Rails는 기본적으로 stdlib의 ERB 를 사용 하지 않으며 erubis를 사용 합니다 . 출처 : 이 어플의 개발자의 코멘트 , ActionView의 gemspec , 이 글을 쓰는 동안 내가 한 허용 병합 요청 .
가 있는 방법 하이픈 사업자에 특히 그들 사이의 행동 차이, %-
그리고 -%
작품.
문서는 부족 루비의 ERB 형식이 "공식적으로"정의되는 경우는? 다음은 실험적인 결론입니다.
모든 테스트는 다음을 가정합니다.
require 'erb'
require 'erubis'
사용할 수있을 때 -
- ERB : 당신은 통과해야합니다
-
에trim_mode
의 옵션ERB.new
을 사용하는. - erubis : 기본적으로 활성화되어 있습니다.
예 :
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
무엇을 하는가 -%
:
ERB : 개행 문자 인 경우 다음 문자를 제거하십시오.
루비 :
로
<% %>
(없이=
)-
때문에 쓸모<% %>
과<% -%>
동일하다.<% %>
공백 만 포함하는 경우 현재 줄을 제거하고 다른 방법은 없습니다.에서
<%= -%>
(와=
) :- 공백 만 포함 된 경우 전체 줄을 제거하십시오.
- 그렇지 않으면 태그 앞에 공백이없고 흰색 만 남은 경우 뒤에 나오는 흰색 스푼을 제거하십시오.
- 그렇지 않으면 태그 뒤에 공백이 없습니다.
예 :
# 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
무엇을 하는가 %-
:
ERB : 태그 앞과 줄 바꿈 뒤에 공백을 제거하십시오 (앞에 공백 만있는 경우에만).
erubis : (without )과
<%- %>
같기 때문에 쓸모 가 없으며 , 유용한 유일한 경우 와 함께 사용할 수 없습니다 . 따라서 이것을 사용하지 마십시오.<% %>
=
=
-%
예 :
# 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
무엇 %-
과 -%
함께
두 가지 효과의 정확한 조합.
<% %>
: 루비 코드를 실행합니다<%= %>
: Erb 파일로 인쇄합니다. 또는 브라우저<% -%>
: 식 후 줄 바꿈을 피합니다.<%# %>
: ERB 의견
<%%
문자 태그 구분 기호가 모호하기 때문에 이에 대한 답변으로 추가했습니다 . 이것은 erb에게 <%
chart.js 툴팁 표시와 같은 js 앱에 필요한 태그 부분 을 해석하지 말라고 지시합니다.
업데이트 (고정 된 깨진 링크)
ERB에 대한 모든 것은 이제 여기에서 찾을 수 있습니다 : https://puppet.com/docs/puppet/5.3/lang_template_erb.html#tags
이것들은 루비 온 레일에서 사용됩니다 :-
<% %> :-
<% %> 태그는 조건, 루프 또는 블록과 같은 것을 반환하지 않는 Ruby 코드를 실행하는 데 사용됩니다. 예 :-
<h1>Names of all the people</h1>
<% @people.each do |person| %>
Name: <%= person.name %><br>
<% end %>
<% = %> :-
내용을 표시하는 데 사용합니다.
Name: <%= person.name %><br>
<%-%> :-
Rails는 ERB를 확장하여 Rails 템플릿의 태그에 후행 하이픈을 추가하여 줄 바꿈을 억제 할 수 있습니다.
<% # %> :-
코드를 주석 처리
<%# WRONG %>
Hi, Mr. <% puts "Frodo" %>
<% %>
거기에 코드를 실행하지만 결과를 인쇄하지 않습니다. 예를 들어 :
erb 파일에 다른 경우 사용할 수 있습니다.
<% temp = 1 %>
<% if temp == 1%>
temp is 1
<% else %>
temp is not 1
<%end%>
인쇄합니다 temp is 1
<%= %>
코드를 실행하고 출력을 인쇄합니다 (예 :
레일 변수 값을 인쇄 할 수 있음).
<% temp = 1 %>
<%= temp %>
인쇄합니다 1
<% -%>
아무 것도 인쇄하지 않기 때문에 아무런 차이가 없으며 -%>
단지 의미가 <%= -%>
있습니다. 새로운 줄을 피할 수 있습니다.
<%# %>
이 안에 작성된 코드를 주석 처리합니다.
참고 URL : https://stackoverflow.com/questions/7996695/what-is-the-difference-between-and-in-erb-in-rails
'Programming' 카테고리의 다른 글
Java를위한 최고의 모의 프레임 워크는 무엇입니까? (0) | 2020.03.01 |
---|---|
클릭 이벤트 리스너에 'return false'를 추가하면 어떤 효과가 있습니까? (0) | 2020.03.01 |
jQuery를 사용하여 요소에 바인딩 된 이벤트를 찾을 수 있습니까? (0) | 2020.03.01 |
다중 형식 매개 변수 제약 조건에 대한 C # 제네릭 구문 (0) | 2020.03.01 |
Chrome에서 window.alert 다시 활성화 (0) | 2020.03.01 |