Разбивка на страницы и сортировка в приложении Rails RESTful - PullRequest
1 голос
/ 24 марта 2009

Какие-нибудь советы о том, как реализовать сортировку и разбиение на страницы для ресурса в приложении Rails и при этом сохранять его RESTful?

Как правильно сопоставить параметры для номера страницы и поля сортировки? (В настоящее время я использую map.resources: x для каждого ресурса в моем приложении)

Какие-либо другие вопросы, связанные с исполнением, о которых мне следует знать? (например, кеширование)

Заранее спасибо.

РЕДАКТИРОВАТЬ Я переформулировал вопрос в более общий , надеясь, что получу больше ответов. Я собираюсь проголосовать, чтобы закрыть этот, так как он больше не актуален. Спасибо за ответы insane-dreamer и vrish88.

Ответы [ 2 ]

5 голосов
/ 18 апреля 2009

Вы пробовали will_paginate? Есть ли какая-то причина, по которой он не отвечает вашим конкретным потребностям? (http://github.com/mislav/will_paginate/tree/master)

2 голосов
/ 24 марта 2009

Я бы порекомендовал вам взглянуть на эту статью:

http://dev.nozav.org/rails_ajax_table.html

http://dev.nozav.org/ajaxtable/ (это демонстрационное приложение)

Я использовал один и тот же базовый код в одном из моих приложений. Я не использовал реализацию AJAX, которую они описывают, но я использовал помощников сортировки, которые они упоминают, а затем структурировал свое представление, чтобы включить сортировку. В помощниках по сортировке вы просто захотите убрать вещи, связанные с ajax. Шахта в конечном итоге выглядит так:

def sort_link_helper(text, param)
  key = param
  key += "_reverse" if params[:sort] == param
  parameters = params.merge({:sort => key, :page => params[:page], :action => controller.action_name })
  link_to(text, url_for(parameters))
end

def sort_td_class_helper(param)
  result = 'class="sortup"' if params[:sort] == param
  result = 'class="sortdown"' if params[:sort] == param + "_reverse"
  return result
end

Самое приятное в этой реализации - это RESTful, DRY и простой в использовании!

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