erb 如何在数组上循环

问题描述 投票:0回答:2

我不能简单地使用 ruby erb 模板系统循环数组......

这是我的模板:

<% ['foo', 'bar'].each do |val| -%>
<%= val %>
<% end -%>

这是命令行和结果

erb test.erb
/usr/share/rvm/rubies/ruby-2.4.1/lib/ruby/2.4.0/erb.rb:896:in `eval': test.erb:1: syntax error, unexpected ';' (SyntaxError)
'foo', 'bar'].each do |val| -; _erbout.concat "\n"
                              ^
test.erb:3: syntax error, unexpected ';'
;  end -; _erbout.concat "\n"
         ^
        from /usr/share/rvm/rubies/ruby-2.4.1/lib/ruby/2.4.0/erb.rb:896:in `result'
        from /usr/share/rvm/rubies/ruby-2.4.1/lib/ruby/2.4.0/erb.rb:878:in `run'
        from /usr/share/rvm/rubies/ruby-2.4.1/bin/erb:149:in `run'
        from /usr/share/rvm/rubies/ruby-2.4.1/bin/erb:170:in `<main>'

这个非常简单的例子有什么问题吗?

免责声明:我是 ruby 和 erb 菜鸟 ^^

ruby loops parsing erb
2个回答
6
投票

“%”之前不应该有“-”。

<% ['foo', 'bar'].each do |val| %>
    <%= val %>
<% end %>

这应该有效。


3
投票

您必须将修剪模式设置为

-

$ erb -T - test.erb
foo
bar

来自手册页:

-T mode 指定修剪模式(默认为 0)。 模式可以是其中之一
          0 在评估嵌入式 ruby 脚本后,EOL 仍然存在。
          如果该行以 %> 结尾,1 EOL 将被删除。
          如果该行以  开头并以 %><% 结尾,则 2 EOL 将被删除。
          如果该行以 -%> 结尾,则 - EOL 将被删除。和前导空格
              如果 erb 指令以 <%- 开头,则被删除。
© www.soinside.com 2019 - 2024. All rights reserved.