Есть у меня задача мне нужно поставить check_box_tag, по нажатию на который должен изменятся статус задачи с
false на
true и наоборот.
Вот что я пробовал и ничего не получилось
<%= check_box_tag 'status', 'complete', task.status, data: { action: 'task_status', remote: true, task_id: task.id } %>
вот то что я добавил в контроллер
def task_status
@task = Task.find(params[:task_id])
if @task.status == COMPLETE_STATUS
@task.status = nil
else
@task.status = COMPLETE_STATUS
end
@task.save
end
UPD1
После просмотра аналогичного случая на stackoverflow, вот что у меня получилось
<%= check_box_tag :status, 'complete', task.status %>
<script>
$('#status').change(function() {
$.get('todo/task_status?task_id='+$(task.id).val(), function(data, status) {
if(status == 'success'){
alert(data)
}
})
});
</script>
и вот такой метод в контроллере
def task_status
@task = Task.find(params[:task_id])
if @task.status == COMPLETE_STATUS
@task.status = nil
else
@task.status = COMPLETE_STATUS
end
render text: 'success'
UPD2 выше написаное бред, так как мне нужно передать id таска на котором включен чекбокс
вот до чего я дошел
<%= check_box_tag :status, 'complete', task.status, task_id: task.id %>
<script>
$('#status').change(function() {
$.get('todo/task_status?task_status='+$(this).val(), function(data, status) {
if(status == 'success'){
alert(data)
}
})
});
</script>
и вот то что в контроллере
def task_status
@task = Task.find(params[:task_id])
@task.status = params[:task_status]
render text: 'success'
end
Настроил роутинг, теперь проблема в том что не передаеться параметр task_id: task.id, как его можно передать в контроллер?