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

后端 未结 3 1837
我在风中等你
我在风中等你 2021-02-10 09:35

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

相关标签:
3条回答
  • 2021-02-10 09:40

    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

    0 讨论(0)
  • 2021-02-10 09:51

    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 讨论(0)
  • 2021-02-10 10:04

    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])
    
    0 讨论(0)
提交回复
热议问题