亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Rails中的ERB中<%、<%=、<%#和-%>之間的區別是什么?

Rails中的ERB中<%、<%=、<%#和-%>之間的區別是什么?

大話西游666 2019-06-09 16:01:18
Rails中的ERB中<%、<%=、<%#和-%>之間的區別是什么?請說明在再培訓局文件中使用的下列字符的用法:<%   %><%=  %><%  -%><%#  %>每一個都有什么用途?
查看完整描述

3 回答

?
慕姐8265434

TA貢獻1813條經驗 獲得超2個贊

<% %>

在括號內執行ruby代碼。

<%= %>

在ERB文件中打印一些東西。

<% -%>

避免在表達式后中斷行。

<%# %>

括號內的注釋;未發送到客戶端(與HTML注釋相反)。

參觀,拜訪魯比博士有關再培訓局的更多資料。


查看完整回答
反對 回復 2019-06-09
?
絕地無雙

TA貢獻1946條經驗 獲得超4個贊

Rails使用斯德利布再培訓局默認情況下,它使用埃盧比..資料來源:這是開發計劃署的評論ActionView寶石規范接受合并請求我在寫這篇文章時做了.

那里它們之間的行為差異,特別是連字符操作符是如何操作的。%--%工作。

文件很少,Ruby的ERB格式“正式”定義在哪里?下面是實證結論。

所有測試都假設:

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

什么%--%一起做

這兩種效應的精確組合。


查看完整回答
反對 回復 2019-06-09
  • 3 回答
  • 0 關注
  • 2111 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號