2012-04-04 51 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