0

I am trying to create on my view the submission of a checkbox (it's a toggle of an attribute) by only clicking the checkbox itself, and without having to use the submit button.

This is what I have for my text box/submit:

<%= form_for @task, remote: true do |task| %>
    <%= task.check_box :complete, class: "check_box" %>
    <%= task.submit %>
<% end %>

When I only click the box, I would like to trigger this method:

def update
    @task = Task.find(params[:id])

    @task.toggle :complete
    @task.save

   respond_to do |format|
      format.html
      format.js
    end

  end

I'm wondering if any of you think that creating a link_to with a div would be an easier solution to this problem, otherwise I would like to use jquery or some other method and keep the check box.

Thank you!

snovosel
  • 91
  • 1
  • 2
  • 10

2 Answers2

1

To to submit form upon selecting checkbox you can simply add onchange: "this.form.submit();" and it will submit the form and load the next action.

<%= form_for @task, remote: true do |task| %>
  <%= task.check_box :complete, class: "check_box", onchange: "this.form.submit();" %>
  Yup I am done!
<% end %>
Elias Glyptis
  • 470
  • 5
  • 9
0

Its simple, see this script for help:

$(".check_box").change(function(){
  if($(this).prop('checked') == true){
    $("form").submit();
  }
});

You might want to check if the checkbox is being checked ON or OFF.

titan
  • 664
  • 6
  • 18