Rails undefined方法电子邮件

时间:2017-10-03 19:11:38

标签: ruby-on-rails

我创建了一个函数,在提交表单后向主体发送电子邮件。

这是我的

pdforms_controller.rb
@principal = User.where(role: 'principal', office: current_user.office).first

如果我进入index.html.erb并使用以下行

<%= principal.email %>

将电子邮件ttyler@duneland.k12.in.us打印到屏幕上。

我的创建函数中有一个动作邮件程序,一旦创建了pdform,就会提醒主体。

NewPdform.notify_principal(@principal).deliver

这是我的new_pdform.rb文件

def notify_principal(principal)
    @principal = principal
    mail(to: @principal.email, subject: 'principal email')
end

无论出于何种原因,当我pdform#create表单时,我收到以下错误。

  

未定义的方法`电子邮件&#39;为零:NilClass

如果我可以在索引视图中调用@ principal.email,为什么我不能在邮件程序功能中使用相同的调用将其发送到该电子邮件?有任何想法吗?感谢。

1 个答案:

答案 0 :(得分:0)

在评论中,我们确定您没有在创建方法中查询数据库的用户表。

然而,这不是最好的解释:对服务器的每个请求对应于控制器&amp;动作(控制器中的方法)。这些是独立的请求。控制器中的实例变量与对应于该操作的视图共享。它们在控制器方法之间共享,但不在单独的请求之间共享。

希望有所帮助。如果有人有更多的见解,请改进这一点。