Изменить порядок вложенного контента - PullRequest
0 голосов
/ 01 апреля 2019

Я создал приложение Rails для создания вопросов в соответствии с категорией. При редактировании моего вопроса я хотел бы иметь возможность выбрать порядок, в котором появляется вопрос

enter image description here


Показать изображение Bdd

сортировка столбцов идентична question_id, но мой вопрос - это вложенная категория, поэтому я хочу сортировку для подресурса. И когда я перетаскиваю элемент, сортировка столбцов не меняется, поэтому при повторном пересчете порядок совпадает

1 Ответ

0 голосов
/ 01 апреля 2019

Драгоценный камень rails_sortable может быть решением, которое вы ищете. Это гем-обертка для сортируемой библиотеки jquery (https://jqueryui.com/sortable/).

Это позволит вам изменить порядок вопросов путем перетаскивания.

Добавьте следующие гемы в файл гемов и запустите пакетную установку

gem 'jquery-rails'
gem 'jquery-ui-rails'
gem 'rails_sortable'

Добавьте следующие операторы require в файл application.js

//= require jquery
//= require jquery_ujs
//= require jquery-ui/widgets/sortable
//= require rails_sortable

Теперь вам нужно добавить сортировку столбца к вашей модели Вопросов (я предполагаю, что здесь ваша модель называется Вопрос), скажем «сортировать» или «позиция». Это будет позиция / порядок конкретного вопроса

А затем добавьте следующее в файл Question.rb (модель)

class Question < ApplicationRecord
  include RailsSortable::Model
  set_sortable :sort  # Indicate a sort column
  # If you do NOT want timestamps to be updated on sorting, use the 
  following option.
  # set_sortable :sort, without_updating_timestamps: true
end

При получении данных вопроса в контроллере, упорядочить их по столбцу сортировки

class QuestionsController < ApplicationController
  def index
    @questions = Question.order(:sort).all
  end
end

А на виду

<table>
  <tbody class="sortable">  <!-- sortable target -->
    <% @questions.each_with_sortable_id do |question, sortable_id| %>
      <tr id="<%= sortable_id %>">  <!-- Needs id tag on sorting 
      elements -->
       <td><%= question.id %></td>
       <td><%= question.content %></td>
       <td><%= question.category_id %></td>
       <td><%= question.sort %></td>
     </tr>
    <% end %>
  </tbody>
</table>

И, наконец, в файле JavaScript,

$(function() {
 $('.sortable').railsSortable(); 
});

rails_sortable github page: https://github.com/itmammoth/rails_sortable

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