What is the difference between <%, <%=, <%# and -%> in ERB in Rails?

http://stackoverflow.com/questions/998979/difference-between-and-in-rails/25617607#25617607

http://stackoverflow.com/questions/7996695/what-is-the-difference-between-and-in-erb-in-rails 

<% %>

Executes the ruby code within the brackets.

<%= %>

Prints something into erb file.

<% -%>

Avoids line break after expression.

<%# %>

Comments out code within brackets; not sent to client (as opposed to HTML comments).

In Ruby 2.1 (not necessarily with Rails), the - removes one trailing newline:

  • the newline must be the first char after the >
  • no spaces are removed
  • only a single newline is removed
  • you must pass the '-' option to use it

Examples:

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

b", nil, '-').result == "a
b"  or raise
原文地址:https://www.cnblogs.com/or2-/p/5222130.html