0

オブザーバー内に部分的なコンテンツをレンダリングする必要があります。

このエラーが発生します:

undefined method `render' for #<OrderObserver:0xb257a30c>

これは私のオブザーバーです:

class OrderObserver < Mongoid::Observer
 def after_create(order)
   gift = order.gift
   seller = order.seller
   buyer = order.user
   admin = User.find_or_create_by(email: "email@email.com")
   message = Message.new(subject: "Message subject", body: "<%= #{render 'users/messages/templates/new_order', :order => order} %>", sender: admin, receiver: seller,
                          microfunc: microfunc, order: order)
   message.send_message
   message.save
  end
end

部分的な内部モンゴイドオブザーバーをレンダリングすることは可能ですか?それが不可能な場合、どうすればよいですか?

どうもありがとうございます!

4

1 に答える 1

0

いいえ、これは不可能です。オブザーバーはオブジェクトレベルで発生し、ドキュメントがいつ保存されるかを監視し、そのドキュメント/オブジェクトに作用します。オブジェクトが保存されるタイミングとブラウザの間にリンクはありません(オブジェクトはコンソール、rakeタスク、またはrails環境がロードされるときはいつでも保存できるため)。

注文の保存時にメッセージを作成し、それを画面に表示する必要がある場合---注文がレンダリングされる前にメッセージの保存が行われます。したがって、注文(およびそのメッセージ)を1回のページ読み込みで発生したかのようにレンダリングできるはずです(発生したため)。

于 2012-10-02T19:12:06.583 に答える