I need render a partial content inside observer.
I get this error:
undefined method `render' for #<OrderObserver:0xb257a30c>
This is my observer:
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
Is it possible render a partial inside mongoid observer?. If it is not possible, How can I do it?
Thank you very much!
No, this is not possible. An observer is occurring at the Object level, observing when a document is saved and then acting upon that document/object. There is no link between when an object is saved and the browser (since an object can be saved in the console, or a rake task, or anytime the rails environment is loaded).
If you need to create a message when an order is saved, and show that on the screen — the saving of the message will occur before the order is rendered. So you should be able to render the order (and its messages) as if it happened in one page-load (because it did).