Есть много вопросов по этой теме, но я не могу найти ничего, что сработает. С помощью this railscast, я пытаюсь сортировать список вопросов с помощью jquery-ui, но, как this вопрос, мои вложенные ресурсы путают вещи.Сортировка вопросов с помощью вложенных ресурсов с помощью jquery
У меня есть три модели: сообщения, комментарии и вопросы.
post.rb:
class Post < ActiveRecord::Base
has_many :comments
has_many :questions, :through :comments
end
Comment.rb
class Comment < ActiveRecord::Base
belongs_to :post
has_many :questions
end
Question.rb
class Question < ActiveRecord::Base
belongs_to :comment
end
Перечень вопросов, которые я хотел бы сортировок по мнению ordered_path (сообщений /: идентификатор/заказано). Вот контроллер сообщений:
Posts_controller.rb
def ordered
@post = Post.friendly.find(params[:id])
@ordered = @post.questions.where(:hide => true).where(:recommend => true).order("position")
end
и questions_controller.rb:
def sort
params[:question].each_with_index do |id, index|
Question.update_all({position: index+1}, {id: id})
end
render nothing: true
end
Я считаю, что я следовал railscast правильно. Я добавил столбец «позиция» к вопросам. Я добавил это к маршрутам:
routes.rb
resources :comments do
resources :questions do
collection { post :sort }
end
end
И на мой взгляд, у меня есть этот
сообщения/ordered.html.erb
<ul id="questions" data-update-url="<%= sort_comment_questions_path %>">
<% @ordered.each do |question| %>
<%= content_tag_for :li, question do %>
<span class="handle">[drag]</span>
<%= question.body %>
<% end %>
<% end %>
</ul>
Наконец, сообщения. js.coffee:
jQuery ->
$('#questions').sortable
axis: 'y'
handle: '.handle'
update: ->
$.post($(this).data('update-url'), $(this).sortable('serialize'))
. Моя проблема заключается в том, что я не уверен, что нужно передать в URL-адрес data-update-url (чтобы избавиться от ошибки «нет соответствия маршрута»), или если это даже правильный путь в первую очередь.
Великий, что в основном зафиксировал его. (Просто нужно было изменить sort_post_questions_path для sort_post_path). Молодой канадский парень ценит помощь :) – user2759575
Ах ладно. Как и должно было заставить работать, как я. Но это определенно не требуется :) – agmcleod