ajax problem when switching from prototype to jquery

I have an old Rails application that I’d previously upgraded to Rails 3.1 with a lot of legacy features left on; now I want to switch to using jQuery instead of Prototype, and switch to using the asset pipeline.

I’m trying to tackle the first of those; no idea if that’s wise, maybe I should start with the asset pipeline instead? To switch to jQuery, I added

gem ‘jquery-rails’

to my Gemfile and replaced

<%= javascript_include_tag “prototype”, “rails” %>

with

<%= javascript_include_tag “http://ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js” %>

<%= javascript_include_tag “rails” %>

(I suspect that I’m doing something pretty wrong there, but I don’t know what.) And I removed all the prototype-specific JavaScript from my files.

The problem that I’m running into is this: I have a form with the following code:

<%= form_tag url_for(:action => :answer, :item => ask), :remote => true, :id => “show-answer” do %>

<%= submit_tag “Answer” %>

<% end %>

It’s supposed to return the response from answer.js.erb. Unfortunately, when I do that, I get the following complaint:

template quiz/answer, application/answer with {:handlers=>[:builder, :erb], :formats=>[:html], :locale=>[:en, :en]}. Searched in:

  • “/home/carlton/memory/app/views”

So it’s looking for HTML instead of JavaScript; and, indeed, the Accept: header says:

text/html,application/xhtml+xml,application/xml;q=0.9,/;q=0.8

(I guess that / at the end is too low priority for it to have an effect.) I tried explicitly responding only to format.js in my controller action, but then I got a 406 Not Acceptable response.

Any suggestions as to how I’m wiring this wrong? (I have no idea where that Accept: header is coming from, I’m certainly not setting it.) I guess the next thing I’ll try is switching over to the asset pipeline; it’s not clear to me why that would make a difference, but I don’t really understand how the jquery-rails gem takes effect, so it’s entirely possible that I’m inadvertently completely bypassing it somehow.

Thanks, David Carlton carlton@bactrian.org