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 關注
- 2111 瀏覽
添加回答
舉報
0/150
提交
取消