0

アプリケーションの多くのページで使用する共通のサブレイアウトがあります。それをレンダリングするに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 %>ました(ハイフンに注意してください)。何も機能していないようです。

4

1 に答える 1

0

ああ、レンダリングしようとしていたレイアウトがまだ HAML ファイルだったからです。それをERBにも変換すると、すべてが期待どおりに機能しました。

于 2013-04-11T21:19:31.990 に答える