开发者

Rails - I need a checkbox to change a field in the DB

开发者 https://www.devze.com 2022-12-15 05:43 出处:网络
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 \"tru

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: ca开发者_StackOverflowlled

Thanks a ton.


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


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])


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.

0

精彩评论

暂无评论...
验证码 换一张
取 消