【问题标题】:Indentation in ERB templatesERB 模板中的缩进
【发布时间】:2018-08-05 18:04:03
【问题描述】:

我在erb 模板中有以下条目:

# Lorem Ipsum...
<% unless @foo['bar'] == nil %>
    <% @foo['bar'].each do |property, value| %>
        <%= "zaz.#{property} #{value}" %>
    <% end %>
<% end %>

解析为:

# Lorem Ipsum...
       zaz.property value

如何删除前导空格以使行在解析的模板中不缩进?

我想避免使用类似的东西:

# Lorem Ipsum...
<% unless @foo['bar'] == nil %>
    <% @foo['bar'].each do |property, value| %>
<%= "zaz.#{property} #{value}" %>
    <% end %>
<% end %>

【问题讨论】:

    标签: ruby-on-rails ruby erb


    【解决方案1】:

    我能提供的唯一解决方案是在&lt;%= %&gt; 条目之前添加&lt;%- 'whatever here' %&gt;

    <% [1,2,3].each do |f| %>
        <%- 1 %><%= f %>
    <% end %>
    

    它在 irb 中输出

    irb(main):018:0> ERB.new(File.read('f.txt'), nil, '-').result
    => "\n1\n\n2\n\n3\n\n"
    

    Rails 文档声称,ERB trim_mode 的默认值为 - http://edgeguides.rubyonrails.org/configuring.html#configuring-action-view

    并且根据https://www.systutorials.com/docs/linux/man/1-erb/ ERB 应该在&lt;%- 启用- 模式时删除&lt;%- 之前的空格。

    【讨论】:

      【解决方案2】:

      您可以缩进代码而不是 ERB 标签:

      # Lorem Ipsum...
      <% unless @foo['bar'] == nil %>
      <%   @foo['bar'].each do |property, value| %>
      <%=    "zaz.#{property} #{value}" %>
      <%   end %>
      <% end %>
      

      【讨论】:

      • 虽然这可能会奏效,但它与我想避免使用的解决方案非常相似。 (问题中的最后一段代码)我正在寻找更正确的解决方案。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-03-20
      • 2012-06-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多