Задать вопрос

Как настроить check_box_tag в Rails с помощью JavaScript?

Есть у меня задача мне нужно поставить 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, как его можно передать в контроллер?
  • Вопрос задан
  • 2812 просмотров
Подписаться 3 Оценить 2 комментария
Пригласить эксперта
Ответы на вопрос 2
@Silaev
remote: true не сработает, нужно вешать обработчик самому.
Ответ написан
ammet
@ammet
Ruby on Rails developer
stackoverflow.com/questions/14780929/rails-checkbo...
Вот такая-же проблема решена
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы