0

我需要在觀察者內部呈現部分內容。是否可以呈現來自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 protected]") 
    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觀察員?如果不可能,我該怎麼做?

非常感謝!

+0

那麼你可以只對ERB.new做同樣的事情,並把它傳遞給一個綁定對象檢查ERB文檔吧 – Viren

回答

0

不,這是不可能的。觀察者發生在對象層面,觀察文檔何時被保存,然後對該文檔/對象進行操作。保存對象和瀏覽器之間沒有關係(因爲對象可以保存在控制檯或rake任務中,或任何時候加載rails環境)。

如果您需要在保存訂單時創建消息,並在屏幕上顯示---在訂單呈現之前將保存消息。所以你應該能夠把訂單(和它的消息)渲染,就好像它發生在一個頁面加載(因爲它)。

+0

非常感謝!但是我可以在哪裏創建消息對象?在order_controller上創建操作?我曾經認爲正確的方法是與mongoid觀察者做...謝謝! – hyperrjas

+0

我的偏好是不使用觀察者,但觀察者是好的。你不能調用渲染。 –

+0

謝謝,但我不知道在哪裏可以創建消息對象:S ... – hyperrjas

相關問題