Using AJAX in Rails: How do I change a button as soon as it's clicked?

Posted by sdc on Stack Overflow See other posts from Stack Overflow or by sdc
Published on 2011-01-11T22:37:07Z Indexed on 2011/01/15 12:53 UTC
Read the original article Hit count: 149

Filed under:
|
|

Hey! I'm teaching myself Ruby, and have been stuck on this for a couple days:

  • I'm currently using MooTools-1.3-compat and Rails 3.

  • I'd like to replace one button (called "Follow") with another (called "Unfollow") as soon as someone clicks on it. I'm using :remote => true and have a file ending in .js.erb that's being called...I just need help figuring out what goes in this .js file

  • The "Follow" button is in a div with id="follow_form", but there are many buttons on the page, and they all have an id = "follow_form"...i.e. $("follow_form").set(...) replaces the first element and that's not correct. I need help replacing the button that made the call.

  • I looked at this tutorial, but the line below doesn't work for me. Could it be because I'm using MooTools instead of Prototype?

    $("follow_form").update("<%= escape_javascript(render('users/unfollow')) %>")

ps. This is what I have so far, and this works:

in app/views/shared:

<%= form_for current_user.subscriptions.build(:event => @event), :remote => true do |f| %>
  <div><%= f.hidden_field :event %></div>
  <div class="actions"><%= f.submit "Follow" %></div>
<% end %>

in app/views/events/create.js.erb

alert("follow!"); //Temporary...this is what I'm trying to replace

*in app/controllers/subscriptions_controller.rb*

def create
  @subscription = current_user.subscriptions.build(params[:subscription])
  @subscription.save
  respond_to do |format|
    format.html { redirect_to(..) }
    format.js {render :layout}
end

Any help would be greatly, greatly appreciated!

© Stack Overflow or respective owner

Related posts about AJAX

Related posts about ruby-on-rails-3