Rails中的ERB中<%、<%=、<%#和-%>之间的区别是什么?请说明在再培训局文件中使用的下列字符的用法:<% %><%= %><% -%><%# %>每一个都有什么用途?
3 回答
绝地无双
TA贡献1946条经验 获得超4个赞
%-
-%
require 'erb'require 'erubis'
-
你必须通过 -
到 trim_mode
任选 ERB.new
用它。 erubis:默认启用。
begin ERB.new("<%= 'a' -%>\nb").result; rescue SyntaxError ; else raise; endERB.new("<%= 'a' -%>\nb" , nil, '-') .result == 'ab' or raiseErubis::Eruby.new("<%= 'a' -%> \n b").result == 'a b' or raise
-%
如果下一个字符是换行符,请删除它。 埃卢比: 如果整行只包含空白空间,则删除整行 否则,如果标签前面有一个非空格,而后面只有白色,则删除后面的白色。 否则,标签后面有一个非空格:什么都不做。 在……里面 <% %>
(没有 =
),-
是没用的,因为 <% %>
和 <% -%>
都是一样的。 <% %>
如果当前行仅包含空白空间,则移除当前行,否则不执行任何操作。 在……里面 <%= -%>
(与 =
):
# RemoveERB.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 raiseErubis: :Eruby.new(" <% 0 %> a\nb").result == " a\nb" or raiseErubis::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:在标记之前和之前的换行符之后删除空格,但前提是之前只有空格。 埃鲁比人:没用,因为 <%- %>
是相同的 <% %>
(没有 =
),这不能与 =
这是唯一一个 -%
可能很有用。所以不要用这个。
# RemoveERB.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
%-
-%
- 3 回答
- 0 关注
- 2019 浏览
添加回答
举报
0/150
提交
取消