简体   繁体   中英

rails, how to reference action mailer in jquery

i wanted to perform an action mailer method after an ajax method completes. im building a twitter app essentially, and wanted an email notification to be sent after someone clicks 'follow', which is done asynchronously.

i gave the follow button an id

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

and then used jquery

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

});

however, im really sure how i can reference my UserMailer in jquery. ultimately im trying to perform this line after my ajax is complete

UserMailer.is_now_following(@user, current_user).deliver

thanks!

hmmm i tried adding that line of code in my create function (to create the relationship of the follow) but it lags my ajax quite a lot. the ajax is to render the 'unfollow' button after the 'follow' is clicked btw.

  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

i commented it out. is this what you meant for adding it after my ajax call is successful? also, how do you put a job on queue? thanks!

The better solution is doing that only in your server not in your client side.

If you do like you want you need doing 2 requests. 1 to follow people and 1 to launch mail. If you user stop this application between this 2 requests, no email is send.

The better solution is to launch your Mailer directly in your follow action. In your controller, you know if the request is a success or not. If the request is a success launch the email.

If you want more reactivity and avoid doing this job directly in your action, you can push the mailer action to a job queue.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM