2012-04-04 33 views
1

這是我批准我網站中某些事件的方式。 這個想法是: 隨着每一個新事件,一封電子郵件被髮送到「[email protected]」。該電子郵件包含某些內容和指向更改「批准」布爾值的方法的鏈接。 除了電子郵件中生成的網址以外,一切都可以使用。
它生成,http://example.com/approve_event。而我得到的錯誤「無法找到ID零事件」如何在Rails 3.1的郵件中傳遞link_to中的值?

我應該怎麼做才能獲得一個指向類似http://example.com/approve_event?=23

AdminNotifier

def approve_event(event) 
    @event = event  
    mail(:to => "[email protected]", :subject => "Event pending of approval") 
    end 

電子郵件查看HTML

一個網址
= link_to "Approve", approve_event_url(:id=> @event.id) 

EventController

def approved 
    @event = Event.find(params[:id]) 
    @event.approved = true 
    @event.save 
end 
+0

你如何檢索郵件中的'@ event'? – alf 2012-04-04 17:20:22

+0

我從EventController調用郵件程序。 AdminMailer.approve_event(@event).deliver 我應該在郵件程序中使用類似於:@event = Event.find(params [:id]) – 2012-04-04 18:01:28

+1

您在視圖中使用了'@ event',爲了工作,你需要在郵件程序中定義'@ event'變量。看看'approve_event'方法,並檢查你是否使用了有效的事件對象。 – alf 2012-04-04 18:14:18

回答

0

您需要確保@event變量在郵件程序方法中正確定義(在這種情況下爲approve_event),以確保它在視圖中可用。

More info on the Rails guides