Rails发送邮件

时间:2015-09-17 00:43:34

标签: ruby-on-rails post

我正在尝试在需要邮件之前创建的现有视图上发送电子邮件。我正在使用遗留代码并已经设置了我的邮件程序和控制器。我有这样的事情:

<% link_to 'blah',
   { :controller => '/some_controller',
     :action => 'deliver_email',
     :purchase_id => 'blah.to_id
   }

它根据我的日志发送电子邮件,但我收到一条消息,我需要创建一个视图。

我不想创建另一个视图,只需在需要此代码的现有页面(不同视图)上发送,但不使用GET请求。它必须是POST。

2 个答案:

答案 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");