是否有可能从mongoid观察者中获得部分?

时间:2012-10-02 19:00:29

标签: ruby-on-rails ruby ruby-on-rails-3 ruby-on-rails-3.1 mongoid

我需要在观察者内部渲染部分内容。

我收到此错误:

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

是否有可能渲染部分内部的mongoid观察者?如果不可能,我该怎么做?

非常感谢!

1 个答案:

答案 0 :(得分:0)

不,这是不可能的。观察者正在对象级别发生,观察文档何时被保存,然后对该文档/对象进行操作。保存对象和浏览器之间没有任何关联(因为对象可以保存在控制台中,或者是rake任务,或者任何时候加载rails环境)。

如果您需要在保存订单时创建消息,并在屏幕上显示该消息,则在呈现订单之前将保存消息。因此,您应该能够呈现订单(及其消息),就好像它发生在一个页面加载中一样(因为它确实如此)。