Rails 3 - 创建一个发送电子邮件的按钮/链接

时间:2011-09-10 19:45:14

标签: ruby-on-rails ruby-on-rails-3 email

在我的应用程序中,我有一个方法收集我在数组中的所有Projects并使用each我显示了一个指向正在访问的用户的链接,这是该项目的链接。

嗯,我想要做的是创建一个按钮或链接,除了这个链接到项目,使我能够向项目所有者发送电子邮件。在这里工作一段时间并在这里有一些帮助我发现我需要在我的Projects控制器中创建一个方法来调用我的邮件程序中的方法。

但我认为事情进展的方式可能不会奏效,那么最好的方法是做什么:除了它之外的电子邮件链接或按钮?

这是我到目前为止所做的:

我在Projects控制器中创建了一个方法:

def send_email(email, name)
    ProfileMailer.member_alert(email, name).deliver
    #redirect_to :root
end

在我看来:

<td><%= link_to "Send Email", send_email_projects_path(project.user.email, project.user.name) %></td>

还添加了一条路线:

resources :projects do
  collection do
    post "send_email"
  end
end

ProfileMailer

  def member_alert(email, name)
    @email = email
    @name = name
    mail(:to => @email, :subject => "#{@name}")
  end

有了这个,我可能不得不为我要插入的每个电子邮件命令创建一个新的视图页面,我可能还会有更多的信息,这就是为什么我认为这不是最好的方式。

1 个答案:

答案 0 :(得分:0)

卢克,你这样做完全是错误的。

您通常会通过标准控制器呈现表单。在表单提交时,创建操作将触发发送电子邮件。我建议你从2.0到2.1.4阅读how ActionMailer works;整个过程详尽详述。

通常还建议您支持邮件数据库,但您也可以放入ActiveModel等并发送邮件,而不会将任何详细信息保存到您的数据库中。

如果您计划发送大量邮件(即Resque,beanstalkd等),那么唯一的额外步骤是考虑扩展您的应用程序。