Как мне получить новые значения позиций в контроллере rails?
У меня есть таблица html, в которой я хочу менять позиции элементов за счёт перетаскивания. Я пока смог найти способ, чтобы просто перетаскивать элементы. Но я не знаю как мне получить новые значения. При получении я хочу менять значения позиций на новые.
Как мне из функции js получить позиции в контролер?
Возможно вопрос не совсем корректный...
Моё представление
<table cellpadding="0" cellspacing="0" border="1">
<tr>
<th>#</th>
<th>Номер</th>
<th>Проект</th>
<th>Трекер</th>
<th>Статус</th>
<th>Тема</th>
</tr>
<tbody id="tasks" data-url="<%=sort_tasks_path%>">
<% @tasks.each do |task| %>
<tr id="<%=dom_id(task)%>">
<td><%= task.id %></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>
<% end %>
</tbody>
</table>
<style type="text/css">
table th, table td
{
width: 100px;
padding: 5px;
border: 1px solid #ccc;
}
.selected
{
background-color: #666;
color: #fff;
}
</style>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
<link rel="stylesheet" href="https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.24/themes/smoothness/jquery-ui.css" />
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.24/jquery-ui.min.js"></script>
<script type="text/javascript">
$(function() {
$("#tasks").sortable({
start: function (e, ui) {
ui.item.addClass("selected");
},
stop: function (e, ui) {
ui.item.removeClass("selected");
},
update: function(e, ui) {
Rails.ajax({
url: $(this).data("url"),
type: "PATCH",
data: $(this).sortable('serialize'),
});
}
});
});
</script>
Функция sort
def sort
params[:task].each_with_index do |id, index|
Task.where(id: id).update_all(position: index + 1)
end
head :ok
end
end