Rails 3.1 — Fixing the 'ajax:loading' event
Stamped: 19 May 2011 | Show comments
Having difficulty getting the ajax:loading event to trigger? All you have to do is use ajax:beforeSend instead! An example:
Our example coffeescript:
$ ->
toggleLoading = -> $("#loading").toggle()
$("#loading").toggle()
$("form[data-remote]")
.bind('ajax:beforeSend', toggleLoading)
.bind('ajax:complete', toggleLoading)
.bind('ajax:success', (event, data, status, xhr) ->
$("#list").html($.parseJSON(data))
)
.bind('ajax:error', (xhr, status, error) ->
)
Our form:
<%= form_for @profile, :id => "hours_form", :url => {:action => :show }, :remote => true do |f| %>
<%= field_set_tag do %>
<%= f.label :profile_name %>
<%= f.text_field :profile_name %>
<% end %>
<%= submit_tag 'Submit', :id => "submit" %>
<%end%>
<div id="loading">
Loading...
</div>
And finally, the controller:
class ProfilesController < ApplicationController
def index
@profile = Profile.new
end
def show
@profile = Profile.find(p.id, :include => :games)
respond_to do |format|
format.html
format.js { render :json => @profile }
end
end
end