0

私は、単純に:

メッセージ.haml

= @messages.count # returns 5
= render partial: 'message', collection: @messages

メッセージ.haml

= message.user
= message.body
= message.created_at

上記では、5 つのパーシャルがレンダリングされていませんが、6 つあり、最後のゴーストパーシャルには半分マップされたモデルが含まれています。a user(user前のメッセージと同じ) を返しnil、 forbodyおよびを返しますcreated_at。私はデータベースをチェックして絶対に確実にしました。関連付けは 5 つあり、ビューには 5 つ出力されますが、なぜ 6 つをレンダリングするのでしょうか?

このように一見不可能に見えるものをデバッグするにはどうすればよいですか?

4

1 に答える 1

1

まず、パーシャルが 6 回レンダリングされていることを確認します。次のように、いくつかのコードを message.haml に入れます。

- puts "\n\n\nrendering template\n\n\n"

この出力は 5 回しか表示されず、他の何かが最後の出力をレンダリングしているように感じます。

また、パーシャルをレンダリングする前に、@messages オブジェクトを出力 (検査) します。

于 2013-10-13T16:25:49.830 に答える