调用操作以在Rails中发送ruby电子邮件

更新时间:2024-05-09 下载TXT文档 下载Word文档

我正尝试向当前的借书人发送电子邮件。我创建了一个名为ReturnRequestMailer的ActionMailer,它具有一个名为please_return。

的方法。

class ReturnRequestMailer < ActionMailer::Base
  def please_return(book_loan)
    subject    'Book Return Request'
    recipients book_loan.person.email
    from       '[email protected]'
    sent_on    Time.now

    body       :book_loan => book_loan
  end
end

我正在尝试从我的BooksController内部的动作中调用此方法

def request_return
  @book = Book.find(params[:id])
  ReturnRequestMailer.please_return(@book.current_loan)
end

我使用以下link_to从我的图书索引中调用(暂时忽略以这种方式执行此操作可能不是最明智的永久解决方案)。

<%= link_to 'Request Return', {:action => 'request_return' , :id => book} %>

一切正常链接,但是我在BooksController#request_return中收到NoMethodError,指出它找不到ReturnRequestMailer的please_return方法。发生了什么事情,导致Please_return方法对BooksController来说是不可见的?

在您的方法前添加一个" deliver_",因此它将为:

def request_return
  @book = Book.find(params[:id])
  ReturnRequestMailer.deliver_please_return(@book.current_loan)
end

(短码网-duanma.net)

您不需要定义'deliver_please_return'方法,ActionMailer中的method_missing方法将知道调用please_return。

rails中的Mailer通常是这样使用的:

class ReturnRequestMailer < ActionMailer::Base
  def please_return(book_loan)
    subject    'Book Return Request'
    recipients book_loan.person.email
    from       '[email protected]'
    sent_on    Time.now

    body       :book_loan => book_loan
  end
end

然后将控制器名称中的deliver_放入控制器中,并将其作为类调用:Method:

def request_return
  @book = Book.find(params[:id])
  NewsletterMailer.deliver_please_return(@book.current_loan)
end

查看您的代码,好像please_return方法已被称为类方法,但已将其定义为实例方法。 (有关此内容的更多详细信息,请参见在Rails中使用self。或不使用..)

class ReturnRequestMailer < ActionMailer::Base
   def self.please_return(book_loan)
   ...

应该修复它。

请注意,这实际上不会使它发送电子邮件,但是会停止NoMethodFound错误。

如nasmorn所述,您需要致电ReturnRequestMailer.deliver_please_return来发送邮件。

以上就是短码网小编为大家整理的《调用操作以在Rails中发送ruby电子邮件》相关内容,希望大家喜欢。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。

如若内容造成侵权/违法违规/事实不符,请将联系本站反馈,一经查实,立即处理!

调用操作以在Rails中发送ruby电子邮件》文档下载仅供参考学习,下载后请在24小时内删除。

转载注明出处:https://www.duanma.net/article/ef0ef26a401.html

回到顶部