I know I have done this before, but for the life of me I can\'t figure it out.
I have a table with a \"called\" field in it. I need to use a checkbox to update the db an
A simple approach without ajax could be using a checkbox inside a form and submitting the form with the checkbox javascript onclick event.
Example:
View:
<% form_for @rsvp, :id => "rsvp" do |f| %>
<%= f.check_box :called, :onclick => "$('#rsvp').submit()" %>
<% end %>
this if you are using JQuery... with prototype the onclick string will be:
$('rsvp').submit()
Controller:
@rsvp = Rsvp.find(params[:id])
if @rsvp.update_attributes(params[:rsvp])
# success
else
# fail
end
Reference:
check box
If you just want to do this just by clicking the checkbox, you need to go the Ajax road. Try using an "observe_field" in your view.
<%= observe_field ":called",
:frequency => 0.25,
:update => 'feedback_to_user',
:url => {:action => :mark_as_called},
:with => 'called',
:on => 'click' %>
All the details here.
Don't forget to adjust your routes so that the "mark_as_called" action can be found.
In view:
<% form_for :rsvp, :url => {:controller => "rsvp", :action => "update"} do |f| %>
<%= f.check_box :called %>
<%= f.submit "Update" %>
<% end %>
In rsvp controller, update method:
@RSVPobject.updateAttribute(:called, params[:rsvp][:called])