레일의 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
'itsource' 카테고리의 다른 글
SQL Server에서 OPTION(MAXDOP 1)을 사용하는 목적은 무엇입니까? (0) | 2023.07.01 |
---|---|
Mongoose 스키마 형식 변경 (0) | 2023.07.01 |
SQL 서버:풀링된 연결 간의 절연 수준 누출 (0) | 2023.07.01 |
SQL Server에서 관련 없는 내용을 쓰는 것을 중지하는 방법(1개 행이 영향을 받음) (0) | 2023.07.01 |
iBeacon Bluetooth 프로필이란? (0) | 2023.06.26 |