IT이야기

레일에서-%>와 %>의 차이

cyworld 2021. 4. 13. 21:49
반응형

레일에서-%>와 %>의 차이


이 질문에 이미 답변이 있습니다.

레일스 튜토리얼을 시작했고 뷰 코드 블록 중 일부가

<h1><%= @subject.name -%></h1>

다른 코드 블록은 다음과 같습니다.

<h1><%= @subject.name %></h1>

-%>와 %>의 차이점은 무엇입니까?

좋은 구문 참조를 알고 있다면 저를 가리킬 수 있습니다. 또한 도움이 될 것입니다.


추가 대시는 ERB가 닫는 태그 뒤에 개행을 출력하지 않도록합니다. 귀하의 예에는 차이가 없지만 다음과 같은 경우 :

<div>
  <% if true -%>
  Hi
  <% end -%>
</div>

다음을 생성합니다.

<div>
  Hi
</div>

그리고 이것은 아닙니다 :

<div>

  Hi

</div>

-이전 %>에는 더 이상 필요하지 않으며 제외해야한다고 확신 합니다.

크롬에 적어도, 생성 된 HTML을 사용하여 동일한 모양 -%>이나 %>.


ERB가 아닌 HAML을 사용하는 경우 태그 뒤보다 작거나 큰 기호로 비슷한 작업을 수행 할 수 있습니다.

>태그 주변의 모든 공백 <을 제거하고 그 안의 모든 공백을 제거합니다.

.float-left<
  %p
    Lorem ipsum dolor sit amet

다음으로 컴파일됩니다.

<div class="float-left"><p>
  Lorem ipsum dolor sit amet
</p></div>

과…

%left_tag
%inside>
%right_tag

다음으로 컴파일됩니다.

<left_tag /><inside /><right_tag />

HAML을 사용하지 않는 경우 확실히 확인해 볼 가치가 있습니다.


업데이트 :이 대답은 잘못 되었습니다. 대신 https://stackoverflow.com/a/25626629/895245참조 하십시오 .


Ruby 2.1 (Rails와 함께 사용할 필요는 없음)에서는 -후행 줄 바꿈 하나를 제거합니다.

  • 개행은 다음의 첫 번째 문자 여야합니다. >
  • 공백이 제거되지 않습니다.
  • 하나의 개행 만 제거됩니다.
  • 당신은 있어야 패스 '-'를 사용하는 옵션을

예 :

require 'erb'
ERB.new("<%= 'a' %>\nb").result              == "a\nb"  or raise
begin ERB.new("<%= 'a' -%>\nb").result; rescue SyntaxError ; else raise; end
ERB.new("<%= 'a'  %>\nb"  , nil, '-').result == "a\nb"  or raise
ERB.new("<%= 'a' -%>\nb"  , nil, '-').result == 'ab'    or raise
ERB.new("<%= 'a' -%> \nb" , nil, '-').result == "a \nb" or raise
ERB.new("<%= 'a' -%>\n b" , nil, '-').result == 'a b'   or raise
ERB.new("<%= 'a' -%>\n\nb", nil, '-').result == "a\nb"  or raise

문서 : http://ruby-doc.org/stdlib-2.1.1/libdoc/erb/rdoc/ERB.html

Rails 4.1 documents this at http://api.rubyonrails.org/classes/ActionView/Base.html, and appears to:

However, Rails 4.1 does remove trailing whitespaces as documented while pure ERB does not, so there may be other differences.

Also, it is not removing the leading newlines as documented: it might be a documentation bug. Opened an issue at: https://github.com/rails/rails/issues/16766

ReferenceURL : https://stackoverflow.com/questions/998979/difference-between-and-in-rails

반응형