Programming

Rails의 ERB에서 <%, <% =, <% # 및-%>의 차이점은 무엇입니까?

procodes 2020. 3. 1. 16:05
반응형

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



반응형