1

我想知道在 ajax 请求完成后如何/在哪里编写回调函数?

我正在构建一个 twitter 应用程序,并在用户单击“关注”后尝试发送电子邮件通知。以下/取消关注是使用 ajax 完成的。当用户点击关注时,我有...

  def follow!(other_user)
    relationships.create!(followed_id: other_user.id)
  end

依次调用

  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

但是,通过添加该 UserMailer 行,它落后于我的 ajax 很多。我应该在哪里/如何放置电子邮件请求?我在考虑 ajax 完成后的回调函数,但我不确定在哪里添加它或如何添加它。

抱歉,我对此还是很陌生。多谢!

嗯,我发现这样做的一个好方法是使用 jquery。我决定给关注按钮

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

一个 id 和使用的 jquery

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

});

之后发送电子邮件。但是,我真的很确定我如何传递变量。我想要达到的最终目标是

UserMailer.is_now_following(@user, current_user).deliver

current_user 是一个函数 btw,它分配/返回 current_user

我该怎么做?谢谢!

4

2 回答 2

1

这些 railscasts 系列已经很老了,但可能会有所帮助

http://railscasts.com/episodes/127-rake-in-background

http://railscasts.com/episodes/128-starling-and-workling

http://railscasts.com/episodes/129-custom-daemon

于 2012-04-05T04:47:45.073 回答
0

考虑:

Resque - https://github.com/resque/resque

Sidekiq - https://github.com/mperham/sidekiq

延迟工作 - https://github.com/collectiveidea/delayed_job

于 2013-10-05T23:53:31.937 回答