0

ajax メソッドが完了した後に、アクション メーラー メソッドを実行したいと考えていました。私は本質的にツイッターアプリを構築しており、誰かが「フォロー」をクリックした後に電子メール通知を送信したいと考えていました。これは非同期で行われます。

フォローボタンに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は、「フォロー」がクリックされた後に「フォロー解除」ボタンをレンダリングすることです。

  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 呼び出しが成功した後に追加するという意味ですか? また、どのようにジョブをキューに入れますか? ありがとう!

4

1 に答える 1

1

より良い解決策は、クライアント側ではなくサーバーでのみそれを行うことです。

必要に応じて、2つのリクエストを実行する必要があります。1つは人をフォローし、1つはメールを起動します。この2つのリクエストの間にユーザーがこのアプリケーションを停止した場合、電子メールは送信されません。

より良い解決策は、フォローアクションで直接メーラーを起動することです。コントローラでは、リクエストが成功したかどうかがわかります。リクエストが成功した場合は、メールを起動します。

より反応性が必要で、アクションでこのジョブを直接実行しないようにする場合は、メーラーアクションをジョブキューにプッシュできます。

于 2012-04-06T07:47:43.150 に答える