【问题标题】:erb how to loop on arrayerb如何在​​数组上循环
【发布时间】:2018-02-14 10:04:47
【问题描述】:

我不能简单地循环使用 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>'

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

免责声明:我是红宝石和erb菜鸟^^

【问题讨论】:

  • 那个错误信息也很不清楚。对我来说,它应该告诉你意想不到的'-'

标签: ruby loops parsing erb


【解决方案1】:

你不应该在“%”之前有那些“-”。

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

这应该可行。

【讨论】:

  • 确实有效!但我不明白,“-”在这里是为了不添加换行符(根据我的理解)。我看到了很多使用这种语法的例子。为什么我不应该在这里使用“-”?
  • @nemenems 似乎您需要启用它来执行ERB.new(template, nil, '-'),有关更多信息,请参阅此帖子stackoverflow.com/questions/4632879/…
  • 完美!你摇滚!
【解决方案2】:

您必须将 修剪模式 设置为 -:

$ erb -T - test.erb
foo
bar

来自手册页:

-T mode 指定修剪模式(默认为 0)。 mode 可以是以下之一 0 在评估嵌入的 ruby​​ 脚本后,EOL 仍然存在。 如果行以 %> 结尾,则删除 1 EOL。 如果该行以 开头并以 %> 结尾,则将删除 2 EOL。 如果行以 -%> 结尾,则删除 - EOL。和前导空格 如果 erb 指令以 开头,则将被删除。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-06-26
    • 2021-01-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-07
    • 2011-05-12
    相关资源
    最近更新 更多