我的应用程序有一个简单的注册,用户在其中输入他/她的电子邮件地址并发布请求。然后使用 AJAX 将请求发送到我的服务器,使用 ActionMailer 将电子邮件发送到用户的电子邮件,并使用 jQuery 呈现感谢消息。使用我目前拥有的代码,仅在发送电子邮件后才会呈现感谢消息,因此显示感谢消息需要一些时间。但是,我希望首先呈现感谢消息,然后在后台将电子邮件发送给用户,以便用户可以立即知道他/她的电子邮件已保存。有没有办法使用 Rails 在后台处理电子邮件?
以下是我当前的代码。在 users_controller.rb
def create
@user = User.new(params[:user])
respond_to do |format|
if @user.save
format.html { redirect_to @user, notice: 'Thank you for signing up!' }
format.js
format.json { render json: @user, status: :created, location: @user }
Notifier.email_saved(@user).deliver
else
format.html { render action: "new" }
format.json { render json: @user.errors, status: :unprocessable_entity }
end
end
end
在 mailers/notifier.rb 中
class Notifier < ActionMailer::Base
default from: "First Last <my@email.com>"
def email_saved(user)
@email = user.email
mail to: @email, subject: 'Auto-Response: Thank you for signing up'
end
end
在 users/create.js.erb
$("<div class='alert alert-success'>Thank you for showing your interest! A confirmation email will be sent to you shortly.</div>").insertAfter("#notice");