【发布时间】:2021-01-22 10:45:52
【问题描述】:
我有一个带有以下 Mailer 的 Rails API:
def demo_request
@user = params[:user]
mail(
to: "foo@bar.com",
subject: "[DEMO REQUEST] #{@user[:name]} - #{@user[:email]}",
body: "A potential customer, #{@user[:name]}, requested a demo be sent to them. You can follow up with them at #{@user[:email]}",
content_type: "text/html"
)
end
很简单的一个,由如下控制器触发:
class DemoRequestsController < ApplicationController
skip_before_action :authenticate_user!
def create
@user = params.permit(:email, :name)
UserMailer.with(user: @user).demo_request.deliver_now
end
end
也很简单,它只是在接收到带有一些参数的 POST 请求时调用 Mailer。此 API 正在被客户端应用程序使用,Rails Forms 在这里不起作用。
在测试中,我可以看到 Mailer 似乎工作正常,但问题是,很明显,控制器将返回 204: No Content 响应。
只有在邮件程序成功的情况下,让控制器返回200 OK 响应的正确方法是什么?否则,返回 404 或错误消息或其他任何适当的信息。
【问题讨论】:
标签: ruby-on-rails ruby ruby-on-rails-5 actionmailer