rails,如何在jquery中引用动作邮件程序

时间:2012-04-06 06:16:39

标签: ruby-on-rails ajax actionmailer

我想在ajax方法完成后执行动作邮件程序方法。我基本上构建一个Twitter应用程序,并希望在有人点击“关注”后发送电子邮件通知,这是异步完成的。

我给了以下按钮一个id

<%= f.submit "Follow", :class => "btn btn-large btn-primary", 
        :id => "follow_button"%>

然后使用jquery

$("#follow_button").bind('ajax:success', function() {

});

然而,我真的很确定如何在jquery中引用我的UserMailer。最终我试图在我的ajax完成后尝试执行此行

UserMailer.is_now_following(@user, current_user).deliver

谢谢!

嗯,我试着在我的创建函数中添加那行代码(以创建后续关系),但它远远落后于我的ajax。 ajax是在点击'follow'之后呈现'取消关注'按钮。

  def create
    @user = User.find(params[:relationship][:followed_id])
    current_user.follow!(@user)
    respond_to do |format|
        format.html {redirect_to @user}
        format.js
    end

    #UserMailer.is_now_following(@user, current_user).deliver
  end
我已经评论过了。这是你在我的ajax调用成功后添加它的意思吗? 还有,你怎么把工作放在队列上?谢谢!

1 个答案:

答案 0 :(得分:1)

更好的解决方案是仅在您的服务器中执行此操作,而不是在客户端。

如果您喜欢,您需要做2个请求。 1跟随人和1发送邮件。如果您在这2个请求之间停止此应用程序,则不会发送任何电子邮件。

更好的解决方案是直接在您的跟进操作中启动您的Mailer。在您的控制器中,您知道请求是否成功。如果请求成功,则启动电子邮件。

如果您想要更多反应并避免直接在您的操作中执行此作业,则可以将邮件程序操作推送到作业队列。