Ответ 1
http://railscasts.com/episodes/240-search-sort-paginate-with-ajax
Есть ли какой-либо код с открытым исходным кодом (или пример) для Ruby on Rails, который может фильтровать, сортировать и разбивать страницы на определенную модель? Также было бы здорово, если бы результаты вернулись через Ajax. Хороший пример того, что я ищу, можно увидеть на этой веб-странице Trulia.
http://www.trulia.com/for_sale/30000-1000000_price/10001_zip/
(Обратите внимание, что по мере удаления фильтров результаты обновляются без перезагрузки страницы.)
Эти виды операций (фильтр, сортировка, paginate) настолько распространены, что кто-то должен что-то написать для этого. Я мог понять это сам, но надеюсь, что есть либо пример кода, либо драгоценный камень, который предоставляет функции, которые мне нужны. И снова я надеюсь, что это можно сделать с помощью Ajax, используя либо jQuery, либо прототип.
Спасибо.
http://railscasts.com/episodes/240-search-sort-paginate-with-ajax
Вы должны обязательно проверить smart_listing gem (https://github.com/Sology/smart_listing).
Он использует kaminari для разбивки на страницы, и кроме сортировки и фильтрации, smart_listing поддерживает также редактирование на месте.
Здесь демо.
Для всего содержимого ajax вы можете использовать jquery и просто добавлять события к флажкам, например:
$(":checkbox").change(function() {
var form = $(this).closest("form");
form.submit() // if you use the jquery form plugin http://jquery.malsup.com/form/
//or
$.ajax({
url: form.attr("action"),
type: "POST",
dataType: "script",
data: form.serialize()
})
})
Фильтрация и сортировка могут быть легко выполнены с запросом на основе параметров, полученных из формы
Model.where(...).order(...).paginate(:per_page => 1, :page => params[:page])
и вы можете использовать will_paginate
(https://github.com/mislav/will_paginate) для разбивки на страницы. Это отличный камень.
Вы либо обновите страницу в файле .js.erb, соответствующем действию контроллера, либо в обратном вызове вызова ajax, если вы использовали dataType: "html".