Как переместить все значения выше или ниже вставки вверх или вниз на один в хэше - PullRequest
0 голосов
/ 30 января 2019

Это для перетаскивания, у меня интерфейс работает правильно, и он правильно отправляет данные в мой рельс.

Я пытаюсь отсортировать хеш на основе позиции индекса, которая поступает кака также сортировать только задачи, являющиеся частью выбранного столбца @tasks = Task.where(column_id: params[:column_id]). Если индекс перемещается вверх по списку, обновляются только те значения, которые больше, а если индекс перемещается вниз по списку, только значения меньшего размера должныбыть обновленным.

Я пробовал много разных вариантов этого цикла, что привело к ближайшему результату, но не совсем правильно.

  @tasks = Task.where(column_id: params[:column_id])

  @task = Task.find(params[:id])

  if(@task.index < params[:index]) 
   @tasks.each do |task|
     next if task.id == params[:id] 
      if task.index <= params[:index] && task.index > @task.index 
        task.update_attribute(:index, t[:index].to_i - 1)
      end
    end
  else
  @tasks.each do |task|
    next if task.id == params[:id] 
      if task.index >= params[:index] && task.index < @task.index
        task.update_attribute(:index, task.index + 1)
      end
    end
  end

  @task.update_attribute(:index, params[:index].to_i)

Мои данные выглядят так

{ "id" => 1, "column_id" => 1, "content" => "this is a task" , "index" => 0}
{ "id" => 2, "column_id" => 1, "content" => "this is second task" , "index" => 1}
{ "id" => 3, "column_id" => 1, "content" => "this is third task" , "index" => 2}
{ "id" => 4, "column_id" => 1, "content" => "this is fourth task" , "index" => 3}

В этих данных, если я перемещу хеш с идентификатором 4 в 1, индекс 4s должен теперь быть 0, 1 должен быть 1, 2 должен быть 2, и 3 должен быть 3, если 1 перемещается в 4, его индекс должентеперь должно быть 3, 4 должно быть 2, 3 должно быть 1, а 2 должно быть 0.

, если 4 перемещается в 2, цикл не должен даже выполняться для задачи 1 или чего-то меньшего, чем он, так как он долженне быть затронутым, то же самоебудет применяться, если 1 был перемещен в 3, в этом случае 4 или выше не будет затронут.

1 Ответ

0 голосов
/ 30 января 2019

Оказалось, что с моей логикой не было никаких проблем ... просто проблема в том, как я назначал данные в моем внешнем интерфейсе, который время от времени смешивал индексы, поэтому я полагал, что принудительный конец возвращает правильные данные, после некоторого копания я назначал задачи неправильным индексам на переднем конце, поэтому ломал бэкэнд.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...