Как сделать перетаскиваемые строки в таблице rails?
Я несколько дней ищу информацию о перетаскивании строк в таблице, так чтобы это работало при заполнении с помощью each do на странице. При этом я не могу добавить в таблицу бд, из которой я беру данные никаких колонок, как иногда советуют.
В общем смысле у меня есть таблица Tasks, которая ссылается на некоторые другие таблицы. (пробовал заполнять по типу: <%=task.project(s).name%> - так не работает)
Перепробовал много вариантов. Вариант с acts_as_list отдельно и вместе с sortablejs и stimulus, при добавлении колонки position. Пробовал и вариант c добавлением колонки sort с гемами ...jquery и rails-sortable(что-то вроде), и ещё несколько.
Однако, ни один из этих вариантов даже наглядно не позволил притронуться к строкам таблицы. Может дело в том, что я пишу плагин в приложении...
В всего двух варинтах(один из которых представлен ниже), хотя бы визуально выходит взять строку, но при отпускании она просто встаёт на место.
Моё представление
<form method="GET">
<select name="filter_option" onchange="this.form.submit()">
<option value="">
Выберите пользователя
</option>
<option value="0">
Все
</option>
<% @users.each do |user| %>
<option value="<%=user.id%>"><%= user.name %>
</option>
<% end %>
</select>
</form>
<table id="myTable">
<thead>
<tr>
<th>Tasks</th>
<th>Номер</th>
<th>Проект</th>
<th>Трекер</th>
<th>Статус</th>
<th>Тема</th>
</tr>
</thead>
<% @tasks.each do |task| %>
<tbody class="sort">
<tr id=<%=task.position%>>
<td><%= task.position %></td>
<% @t = @issues.find_by(id: task.issues_id) %>
<td><%= @t.id %></td>
<% @project = @projects.find_by(id: task.projects_id) %>
<td><%= @project.name %></td>
<% @tracker = @trackers.find_by(id: task.trackers_id) %>
<td><%= @tracker.name %></td>
<% @status = @statuses.find_by(id: task.issue_statuses_id) %>
<td><%= @status.name %></td>
<td><%= @t.subject %></td>
</tr>
</tbody>
<% end %>
</table>
<script>
$('.sort').sortable({
cursor: 'move',
axis: 'y',
update: function(e, ui) {
href = 'tasks';
$(this).sortable("refresh");
sorted = $(this).sortable("serialize", 'id');
$.ajax({
type: 'POST',
url: href,
data: sorted,
success: function(msg) {
//do something with the sorted data
}
});
}
});
</script>