Rails controller not rendering correct view when form is force-submitted by Javascript

Posted by whazzmaster on Stack Overflow See other posts from Stack Overflow or by whazzmaster
Published on 2010-06-02T15:34:45Z Indexed on 2010/06/03 4:44 UTC
Read the original article Hit count: 181

Filed under:
|
|

I'm using Rails with jQuery, and I'm working on a page for a simple site that prints each record to a table. The only editable field for each record is a checkbox. My goal is that every time a checkbox is changed, an ajax request updates that boolean attribute for the record (i.e., no submit button).

My view code:

<td>
<% form_remote_tag :url => admin_update_path, :html => { :id => "form#{lead.id}" } do %>
   <%= hidden_field :lead, :id, :value => lead.id %>
   <%= check_box :lead, :contacted, :id => "checkbox"+lead.id.to_s, :checked => lead.contacted, :onchange => "$('#form#{lead.id}').submit();" %>
<% end %>
</td>

In my routes.rb, admin_update_path is defined by

  map.admin_update 'update', :controller => "admin", :action => "update", :method => :post

I also have an RJS template to render back an update. The contents of this file is currently just for testing (I just wanted to see if it worked, this will not be the ultimate functionality on a successful save)...

page << "$('#checkbox#{@lead.id}').hide();"

When clicked, the ajax request is successfully sent, with the correct params, and the action on the controller can retrieve the record and update it just fine. The problem is that it doesn't send back the JS; it changes the page in the browser and renders the generated Javascript as plain text rather than executing it in-place.

Rails does some behind-the-scenes stuff to figure out if the incoming request is an ajax call, and I can't figure out why it's interpreting the incoming request as a regular web request as opposed to an ajax request.

I may be missing something extremely simple here, but I've kind-of burned myself out looking so I thought I'd ask for another pair of eyes. Thanks in advance for any info!

© Stack Overflow or respective owner

Related posts about ruby

Related posts about jquery-ajax