为了账号安全,请及时绑定邮箱和手机立即绑定

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 关注
  • 1813 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信