当用户发帖(sub_opp)时,我向用户发送电子邮件.但是,我想在电子邮件中包含这项运动(sub_opp模型中的列).在下面的示例中,当它遇到邮件程序时,我在sub_opp上得到一个未定义的方法错误. 控制
控制器创建sub_opp
def create @sub_opp = SubOpp.new(sub_opp_params) respond_to do |format| if @sub_opp.save user = User.find_by_id(@sub_opp.user_id) sub_opp = @sub_opp UserMailer.posted_subopp_email(user, sub_opp).deliver .... continued
梅勒控制器
def posted_subopp_email(user, sub_opp) mail( :to => user.email, :subject => 'You made a post!' ) end
梅勒视图
<!DOCTYPE html> <html> <head> <meta content='text/html; charset=UTF-8' http-equiv='Content-Type' /> </head> <body> <h3>You posted to the sub feed!</h3> <p>You made a post.</p> <p><%= sub_opp.sport %></p> </body> </html>
为什么不<%= sub_opp.sport%>在这个例子中工作? Sport是sub_opp模型中的一列.
谢谢
首先创建一个实例变量.您的邮件程序视图中将提供实例变量.将您的邮件程序视为MVC中的控制器.
def posted_subopp_email(user, sub_opp) @sub_opp = sub_opp @user = user mail( :to => user.email, :subject => 'You made a post!' ) end
然后像在您的视图中一样访问它
<body> <h3>You posted to the sub feed!</h3> <p>You made a post.</p> <p><%= @sub_opp.sport %></p> </body>