Как добавить список элементов перед первоначальным списком записей перед возвратом из контроллера? - PullRequest
0 голосов
/ 05 мая 2018

как добавить список записей перед возвратом

Допустим, у меня есть индексный метод, определенный ниже. Индексное представление ожидает, что @songs перечислит все песни.

@top = TopChart.all

@songs = Song.order(created_at: :desc).page(params[:page]).per(20)

Теперь я хочу добавить @top записи перед @songs. например @songs = @top + @songs. После обновления списка этот способ также должен работать. Я ценю любую помощь! Спасибо!

1 Ответ

0 голосов
/ 05 мая 2018

Чтобы подкачка работала даже после добавления нескольких дополнительных записей, необходимо указать необходимое смещение при получении @songs. Вам также нужно будет обработать первую страницу вашего запроса отдельно, где отображаются записи из @top. Вот пример кода:

page_size = 20
if params[:page] == 1
    @top = TopChart.all
    page_offset = 0
    per_page = page_size - @top.size
else
    @top = []
    page_offset = page_size - TopChart.all.count
    per_page = page_size
end

@songs = Song.offset(page_offset).order(created_at: :desc).page(params[:page]).per(per_page)
@songs = @top + @songs

В этом коде, если мы возвращаем первую страницу, смещение равно 0, но требуемый размер @songs становится 20 минус размер @top. Однако после первой страницы требуемый размер @songs становится 20 со смещением количества песен, извлеченных на первой странице.

Обратите внимание, что существует предположение: размер @top меньше размера страницы (в нашем примере - 20)

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