Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/54.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Vue.draggable获取拖动项和列表ID_Ruby On Rails_Vue.js_Vue.draggable - Fatal编程技术网

Ruby on rails Vue.draggable获取拖动项和列表ID

Ruby on rails Vue.draggable获取拖动项和列表ID,ruby-on-rails,vue.js,vue.draggable,Ruby On Rails,Vue.js,Vue.draggable,我已经阅读了我能找到的所有文档和stackoverflow,但仍然存在一些问题 我正在用Vue和Rails构建Trello克隆 我有许多可拖动的列表 每个列表都有可拖动的卡片 当我将一张卡片从一个列表拖到第二个列表时,如何将其持久化到ajax rails端点 我尝试过使用@end方法和:move道具,但运气不佳 #app.vue <template> <draggable v-model="lists" group='lists' class="row dragArea"

我已经阅读了我能找到的所有文档和stackoverflow,但仍然存在一些问题

我正在用Vue和Rails构建Trello克隆

我有许多可拖动的列表

每个列表都有可拖动的卡片

当我将一张卡片从一个列表拖到第二个列表时,如何将其持久化到ajax rails端点

我尝试过使用@end方法和:move道具,但运气不佳

#app.vue
<template>
  <draggable v-model="lists" group='lists' class="row dragArea" @end="listMoved">
    <div v-for="(list, index) in lists" class="col-3">
      <h6>{{ list.name }}</h6>
      <hr />

      <draggable v-model="list.cards" group='cards' class="dragArea" :move="cardMoved">
        <div v-for="(card, index) in list.cards" class="card card-body mb-3">
          {{ card.name }}
        </div>
      </draggable>

      <div class="card card-body">
        <input v-model="messages[list.id]" class="form-control" ></input>
        <button v-on:click="submitMessages(list.id)" class="btn btn-secondary">Add</button>
      </div>
    </div>
  </draggable>
</template>

<script>
import draggable from 'vuedraggable'

export default {
  components: { draggable },
  props: ["original_lists"],
  data: function() {
    return {
      messages: {},
      lists: this.original_lists
    }
  },
  methods: {
    cardMoved: function(event) {
      console.log(event)

      var data = new FormData
      data.append("card[list_id]", WHERE_DO_I_FIND_THIS_ID)
      data.append("card[position]", event.draggedContext.element.id)


      Rails.ajax({
        url: `/cards/${event.draggedContext.element.id}/move`,
        type: "PATCH",
        data: data,
        datatype: "json"
      })
    },
  }
}
</script>
使用包含所需的所有dnd信息且仅在拖动操作结束后调用的

按照@sovalina的建议,您需要传递链接到列表的额外信息:

:change="changed(list.id, $event)"
此外,还应键入您的div:

<div v-for="(card, index) in list.cards" :key="card.name" class="card card-body mb-3">
使用包含所需的所有dnd信息且仅在拖动操作结束后调用的

按照@sovalina的建议,您需要传递链接到列表的额外信息:

:change="changed(list.id, $event)"
此外,还应键入您的div:

<div v-for="(card, index) in list.cards" :key="card.name" class="card card-body mb-3">
将id作为参数传递::move=cardMovedlist.id,$event和cardMoved:functionid,event{…}将id作为参数传递::move=cardMovedlist.id,$event和cardMoved:functionid,event{…}