我正尝试向当前的借书人发送电子邮件。我创建了一个名为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
然后将控制器名称中的
def request_return
@book = Book.find(params[:id])
NewsletterMailer.deliver_please_return(@book.current_loan)
end
查看您的代码,好像
class ReturnRequestMailer < ActionMailer::Base
def self.please_return(book_loan)
...
应该修复它。
请注意,这实际上不会使它发送电子邮件,但是会停止NoMethodFound错误。
如nasmorn所述,您需要致电
以上就是短码网小编为大家整理的《调用操作以在Rails中发送ruby电子邮件》相关内容,希望大家喜欢。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权/违法违规/事实不符,请将联系本站反馈,一经查实,立即处理!
《调用操作以在Rails中发送ruby电子邮件》文档下载仅供参考学习,下载后请在24小时内删除。
转载注明出处:https://www.duanma.net/article/ef0ef26a401.html