AJAX in Ruby on Rails


#1

I’m having some trouble getting AJAX working properly for me in Rails.
I’ve
tried the example in “Agile Web D. with Rails” on page 391
using
form_remote_tag(), and instead of updating a

like it should, it
renders the form as an entirely new page. I’ve tried in on Windows XP
and
OS X 10.4, WEBrick and Apache, using IE and Firefox, and to no avail.

For those who don’t have the book, the problem is essentially:

I have a controller with:

def index
end

def blah
@stuff = ‘should print’
render :partial => ‘form’
end

index.rhtml:

Display me!

<%= render(:partial => 'form') %>

_form.rhtml:
<% if @stuff %>

<%= @stuff %> <% end %>

<%= form_remote_tag(:update => “update_me”, :url => { :action => :blah }
)
%>
blah blah blah
<%= end_form_tag %>

When you submit the form, the

Display me!

part doesn’t show
again.
The render :partial => ‘form’ from the ‘blah’ action just renders the
form
and doesn’t update the “update_me”
section. The WEBrick output is
as
follows:

127.0.0.1 - - [12/Dec/2005:10:43:28 Eastern Standard Time] “GET
/guesswhat
HTTP/1.1” 200 851

  • -> /guesswhat

127.0.0.1 - - [12/Dec/2005:10:43:28 Eastern Standard Time] “GET
/favicon.ico
HTTP/1.1” 200 0

  • -> /favicon.ico

127.0.0.1 - - [12/Dec/2005:10:43:32 Eastern Standard Time] “POST
/guesswhat/guess HTTP/1.1” 200 623

http://localhost:3000/guesswhat -> /guesswhat/guess

Notice the difference between the first and third actions:

Does anyone know what the problem is? I hope this isn’t too confusing…
it’s hard to explain. If you have the book you can run the example
yourself
and see what you encounter.

Thanks in advance,
Charlie


#2

make sure you are including the javascript prototype library

<%= javascript_include_tag “prototype” %>

hope that helps!
steve


#3

First step, have you included the required java scripts on the page?
<%= javascript_include_tag :defaults %>

I read through the part and I dont think they mention the needed
includes (or at least its hard to spot when they do).