Каминари с нумерацией полей - PullRequest
1 голос
/ 07 января 2012

У меня есть форма для модели компании:

<%= form_for(@company) do |f| %>

У меня также есть раздел fields_for для редактирования отношения импорта:

<%= f.fields_for(:imports) do |builder| %>

Компания has_many: импорт а также Импорт принадлежит_: компания

Я хочу использовать Kaminari для разбивки на страницы, но проблема в том, что Kaminari нужен объект страницы, возвращаемый из контроллера, например:

@imports = Import.where(:company_id => current_user.company.id).page(params[:page]).per(50)    

Это позволяет мне использовать метод пагината из Kaminari:

<%= paginate @imports %>

Это работает и отображает ссылки на страницы в моей форме, однако они явно не связаны с моим блоком fields_for.

Мой вопрос: как я могу выполнить разбиение на страницы с полем fields_for? Мне нужно разрешить пользователю редактировать список моделей импорта, и, вероятно, их будет слишком много, чтобы поместиться на одной странице, поэтому я пытаюсь разбить на страницы. По сути, я пытаюсь создать электронную таблицу для пользователей.

Мне не нужно использовать Kaminari, но я на Rails 3.1, и это, кажется, популярный выбор.

Спасибо за любую помощь в этом.

1 Ответ

0 голосов
/ 07 января 2012

Вы также можете использовать 'fields_for` с коллекцией объектов.

Так что вы можете сделать

<%= f.fields_for(:imports, @imports) do |builder| %>

Если это ответит на ваш вопрос, то все готово! Однако, если вы хотите, чтобы это была «электронная таблица», похожая на тяжелое испытание, то, возможно, не так много.

Проблема в том, что если вы будете делать это каждый раз, когда переходите на новую страницу, вы потеряете все отредактированные imports.

Это может быть проще сделать:

  • Соберите все fields_for и спрячьте их.
  • Затем создайте свою собственную AJAX-нумерацию страниц.

Таким образом, когда вы отправляете изменения, они пропускают все imports и их изменения вместо текущей страницы.

...