Degrading ajax calls - how?


#1

Hey - I have a few ajax calls in my app that I’m not really sure how to
degrade to html. For the most part, these are functions that insert or
remove elements to/from the dom.

For example, I have my own edit-in-place on the data, which is called by
start_edit action. This action renders an rjs template that replaces the
view with an edit form.

view (partial)

{ :action => 'start_edit', :id => @product} )%>" > <%=h product.name %>

controller

def start_edit
prod = params[:id]
params[:row] = “prod_#{prod.id}”
respond_to do |format|
format.js { render :template => ‘rjs/start_edit’ }
end
end

rjs

page.replace_html params[:row], :partial => ‘edit’, :object =>
params[:id]

Any ideas?


#2

Shilo A. wrote:

Hey - I have a few ajax calls in my app that I’m not really sure how to
degrade to html. For the most part, these are functions that insert or
remove elements to/from the dom.

def start_edit
prod = params[:id]
params[:row] = “prod_#{prod.id}”
respond_to do |format|
format.js { render :template => ‘rjs/start_edit’ }
end
end

Any ideas?

Your start_edit action is going to need to respond to format.html.
You’ll then need the response to regenerate the full HTML page that
represents the desired page state, since you can’t simply manipulate the
DOM.

I suppose you could store the desired page state in an instance variable
from the controller action so your view can determine which version of
the page to draw.

Constants:
VIEWING = 0
EDITING = 1

def start_edit
@page_state = EDITING


end

I’m not really an expert on degrading AJAX to HTML, but this should be a
gist of it though.