我是铁杆新手。请帮助我,因为我没有清楚知道在轨道中使用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 */
}
});
});
请告诉我怎么做。
答案 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