sim*_*imo 351 ruby templates ruby-on-rails erb
有人可以描述ERB文件中使用的以下字符的用法:
<% %>
<%= %>
<% -%>
<%# %>
Run Code Online (Sandbox Code Playgroud)
每个人的用法是什么?
aur*_*bee 448
<% %>
Run Code Online (Sandbox Code Playgroud)
在括号内执行ruby代码.
<%= %>
Run Code Online (Sandbox Code Playgroud)
将某些内容打印到erb文件中.
<% -%>
Run Code Online (Sandbox Code Playgroud)
表达后避免换行.
<%# %>
Run Code Online (Sandbox Code Playgroud)
注释括号内的代码; 没有发送到客户端(而不是HTML注释).
访问Ruby Doc获取有关ERB的更多信息.
yal*_*tar 86
<% %>
并且<%- and -%>
适用于任何Ruby代码,但不输出结果(例如if语句).两者是一样的.
<%= %>
用于输出Ruby代码的结果
<%# %>
是ERB的评论
这是一个很好的指南:http: //api.rubyonrails.org/classes/ActionView/Base.html
Cir*_*四事件 47
Rails 默认不使用stdlib的ERB,它使用erubis.来源:这个开发者的评论,ActionView的gemspec,接受了我在写这篇文章时所做的合并请求.
这里是他们之间的行为差异,特别是关于如何连字号经营者%-
和-%
工作.
文档很少,Ruby的ERB格式在哪里"正式"定义?以下是经验性结论.
所有测试都假设:
require 'erb'
require 'erubis'
Run Code Online (Sandbox Code Playgroud)
什么时候可以使用 -
-
到trim_mode
的选项ERB.new
来使用它.例子:
begin ERB.new("<%= 'a' -%>\nb").result; rescue SyntaxError ; else raise; end
ERB.new("<%= 'a' -%>\nb" , nil, '-') .result == 'ab' or raise
Erubis::Eruby.new("<%= 'a' -%> \n b").result == 'a b' or raise
Run Code Online (Sandbox Code Playgroud)
什么-%
:
ERB:如果是换行符,则删除下一个字符.
erubis:
在<% %>
(没有=
),-
是没用的,因为<% %>
并且<% -%>
是相同的.<% %>
如果它只包含空格,则删除当前行,否则不执行任何操作.
in <%= -%>
(with =
):
例子:
# Remove
ERB.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 raise
Erubis::Eruby.new(" <% 0 %> a\nb").result == " a\nb" or raise
Erubis::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
Run Code Online (Sandbox Code Playgroud)
什么%-
:
ERB:在标记之前和之前的换行符之后删除空格,但前提是只有空格.
erubis:无用因为<%- %>
与<% %>
(没有=
)相同,并且这不能用于=
哪个是唯一-%
可以有用的情况.所以永远不要使用它.
例子:
# Remove
ERB.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
Run Code Online (Sandbox Code Playgroud)
什么%-
和-%
做在一起
两种效果的确切组合分开.
我添加了<%%
文字标记分隔符作为答案,因为它的含糊不清.这将告诉erb不要解释<%
js应用程序所需的标记部分,例如显示chart.js工具提示等.
关于ERB的一切都可以在这里找到:https: //docs.puppet.com/puppet/latest/reference/lang_template_erb.html#tags
归档时间: |
|
查看次数: |
95328 次 |
最近记录: |