在复选框选中的rails上更改变量的值

时间:2013-10-29 10:37:31

标签: javascript jquery ruby-on-rails checkbox

我是铁杆新手。请帮助我,因为我没有清楚知道在轨道中使用jquery和ajax。

我有一个任务复选框。我的数据库中有一个布尔字段is_completed,默认设置为false。选中复选框时,is_completed的值应设置为true,如果未选中则应为false。

迁移任务表

  t.boolean :is_completed, :default => false 

我的观看代码是

  <%= check_box_tag :is_completed %>

在我的task.js

  $(':checkbox').change(function() {
     if (this.checked) {
   alert('completed')
      /* is_completed should be true */
     } 
     else {
  /* is_completed should be true */
    } 
   });
 });

请告诉我怎么做。

3 个答案:

答案 0 :(得分:0)

试试这个:

$(':checkbox').click(function() { 
    var checked = $(':checkbox').prop('checked');
    if (checked)
        alert('yes');   
    else
        alert('no');
});

答案 1 :(得分:0)

使用jquery ajax:

$(':checkbox').change(function() {
   $.ajax({
    url: "/tasks/" + task_id,
    data: "&task[is_completed]=" + this.checked,
    dataType: "json",
    type: "PUT"
    });
 });

答案 2 :(得分:0)

我创建了一个方法并从jquery传递了值,并使用ajax请求完成了所有事情。

在task.js

  $(function () {
    $(':checkbox').change(function () {
      var task_id = jQuery('#task_id:hidden').val();
      complete_task(task_id);
   });


 function complete_task(task_id) {
$.ajax({    
  type: "GET",
  dataType: "html",
  url: "/tasks/"+task_id+"/complete_task",
  data: {"task_id": task_id},
  success: function(data) {
    $("#task_status").html(data);
  }
 });
 }
});
在tasks_controller中

 def complete_task
@task =Task.find(params[:task_id])
@task.is_completed = true
@task.save
render :partial => 'task'
end