itsource

레일의 ERB에서 <%, <%=, <%# 및 -%>의 차이는 무엇입니까?

mycopycode 2023. 7. 1. 08:34
반응형

레일의 ERB에서 <%, <%=, <%# 및 -%>의 차이는 무엇입니까?

누가 ERB 파일에 사용된 다음 문자의 사용법을 설명해 주시겠습니까?

<%   %>
<%=  %>
<%  -%>
<%#  %>

각각의 용도는 무엇입니까?

<% %>

대괄호 안에서 루비 코드를 실행합니다.

<%= %>

무언가를 erb 파일로 인쇄합니다.

<%== %>

와동한에 <%= raw %>erb 파일에 완전한 내용(예: 탈출 없음)을 인쇄합니다. (Ruby on Rails Guides에서 가져온 것입니다.

<% -%>

식 후 줄 바꿈을 방지합니다.

<%# %>

대괄호 안에 있는 코드를 주석 처리합니다. HTML 주석과는 달리 클라이언트로 전송되지 않습니다.

ERB에 대한 자세한 내용은 Ruby Doc을 참조하십시오.

<% %>그리고.<%- and -%>Ruby 코드에 대한 것이지만 결과를 출력하지 않습니다(예: if 문).둘은 같습니다.

<%= %>는 Ruby 하기 위한 것입니다.

<%# %>ERB 코멘트입니다.

여기 좋은 가이드가 있습니다: http://api.rubyonrails.org/classes/ActionView/Base.html

Rails는 기본적으로 stdlib의 ERB사용하지 않고 erubis를 사용합니다.출처: 개발자의 코멘트, ActionView의 gemspec, 제가 이 글을 쓰면서병합 요청을 수락했습니다.

특히 하이픈 연산자가 어떻게 작동하는지에 대한 행동 차이가 있습니다.%-그리고.-%일하다.

문서화가 부족합니다. Ruby의 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: 태그 앞과 이전 줄 뒤에 공백을 제거합니다. 단, 이전 줄 앞에 공백만 있는 경우에만 해당됩니다.

  • : 쓸가습니다모루다▁because 때문에 쓸모가 없습니다.<%- %>는 와동합다니와 .<% %>(=), 은 )와 함께 할 수 =그것이 유일한 경우입니다-%유용할 수 있습니다.절대로 사용하지 마세요.

예:

# 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>

<% -%>:-

레일즈는 ERB를 확장하므로 레일즈 템플릿의 태그에 후행 하이픈을 추가하는 것만으로 새 선을 표시할 수 있습니다.

<%# %>:-

코드를 코멘트 아웃합니다.

<%# 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

반응형