在ERB渲染布局中嵌套每个循环不会迭代任何元素

时间:2013-04-11 21:14:46

标签: ruby-on-rails haml erb

我有一个共同的子布局,我在我的应用程序的许多页面上使用。为了渲染它,我使用render layout: ...然后将视图的其余部分放在块中:

<%= render layout: 'layouts/content-box', locals: { header: 'Foo' } do %>
  <% @posts.each do |post| %>
    <%= post.inspect %>
  <% end %>
<% end %>

这会产生一个空模板,实际上循环根本不会迭代。这曾经有用,但我们目前正在从HAML转移:

= render layout: 'layouts/content-box', locals: { header: 'Foo' } do
  - @posts.each do |post|
    = post.inspect

我认为我发布的HAML是等价的,但显然不是。如果我将循环移到render块之外,那么它可以工作。阵列在那里并填充。我究竟做错了什么?我也尝试过使用<%- @posts.each %>(请注意连字符)。似乎没什么用。

1 个答案:

答案 0 :(得分:0)

Gahhhh,这是因为我尝试渲染的布局仍然是一个HAML文件。一旦我将其转换为ERB,一切都按预期工作。