我正在尝试在需要邮件之前创建的现有视图上发送电子邮件。我正在使用遗留代码并已经设置了我的邮件程序和控制器。我有这样的事情:
<% link_to 'blah',
{ :controller => '/some_controller',
:action => 'deliver_email',
:purchase_id => 'blah.to_id
}
它根据我的日志发送电子邮件,但我收到一条消息,我需要创建一个视图。
我不想创建另一个视图,只需在需要此代码的现有页面(不同视图)上发送,但不使用GET请求。它必须是POST。
答案 0 :(得分:0)
您可以在发送电子邮件后在deliver_email操作中重定向。
def deliver_email
YourMailer.mailer_action(@user).deliver_now
redirect_to your_redirect_path
end
答案 1 :(得分:0)
您可以在link_to帮助程序中使用:remote选项。它使您的link_to成为ajax,因此您可以在不重定向的情况下响应javascript。从rails指南中查看working with javascript in rails。我没有测试,但代码可能如下所示。
视图:
<% link_to 'blah', controller: '/some_controller', action: 'deliver_email', purchase_id: blah.to_id, remote: true %>
控制器:
# app/controllers/some_controller.rb
def deliver_email
YourMailer.mailer_action(@user).deliver_now
respond_to do |format|
format.js
end
end
JS:
# app/views/some/deliver_email.js.erb
alert("Success");