views:

360

answers:

3

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 and check if "called" is "true" or not. Doesn't need to be AJAX, just needs to update the field.

table: rsvp field: called

Thanks a ton.

+1  A: 

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])
cmpolis
Thanks. I am looking to update the field just by clicking the checkbox, not submitting a form. Any other ideas? Cheers!
Eric Goodenough
+2  A: 

Hi,
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.

hth.
P.

Pierre
I wouldn't specify the frequency since that means it would use polling. Instead omit that option or specify 0, and the code will use the event observer instead.
Daemin
+1  A: 

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

makevoid
Thanks! This worked great.
Eric Goodenough