2013-10-29 17 views
0

我是rails新手。請幫助我,因爲我沒有清楚地知道在rails中使用jquery和ajax。更改複選框的變量值check rails

我有一個任務複選框。我的數據庫中有一個布爾字段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 */ 
    } 
    }); 
}); 

請告訴我如何做到這一點。

+0

你能後整個視圖代碼和根源是什麼?你是否希望通過ajax來做到這一點,它並沒有在任何地方說過。 – DickieBoy

+0

除了ajax,他還能做些什麼? – user2503775

+0

我想使用ajax。 –

回答

0

試試這個:

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

它沒有工作。我想讓我的數據庫中的字段更改爲true。如果複選框被選中,但即使我選中複選框沒有迴應 –

+0

檢查[this](http://stackoverflow.com/questions/7475507/how-to-access-jquerys-ajax-call-in-ror) –

0

使用jQuery的ajax:

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