Листать объекты того же loop в Rails

У меня есть легкая проблема,

Мне удалось повторить 2 объекта в том же each, моя проблема состоит в том, что этот не функционирует с will_paginate, и чтобы мочь делать это повторение, я основываюсь метода Руби: sort_by но видимо этот оно не функционирует ни с каким драгоценным камнем пагинации, которая они дают мне подсказку, я надеюсь, что они могут бросать мне руку, здесь я имею им мой код:

enterprises_controller.rb

def show
  @items = @enterprise.jobs + @enterprise.products
  @items = @items.sort_by do |item| item.created_at end
  @items = @items.reverse
end

show.html.erb

<% @items = @items.each do |item| %>
  <%= item.name %> <br>
<% end %>
0
задан 20.01.2017, 22:10
0 ответов

В этом случае, ты был бы должен использовать метод sort для договоренности, у которой есть следующая структура и позволяет тебе приказывать любую договоренность из-за какого-либо из признаков Ваших объектов.

my_array.sort! { |a, b|  a.attribute <=> b.attribute }

В этом случае, результат был бы очень сходным в:

my_array = @items.sort! { |a, b|  a.created_at <=> b.created_at }

Для пагинации ты нуждаешься в том, чтобы использовать кроме will_paginate Ваш модуль для договоренностей, с require 'will_paginate/array'

Который используется следующего способа:

my_array.paginate(:page => params[:page], :per_page => 30)
2
ответ дан 03.12.2019, 17:36
  • 1
    ¿ Где добавил requiere Джоэл? –  20.01.2017, 22:20
  • 2
    Пойди гениально этого добился Джоэл! Большое спасибо! –  20.01.2017, 22:37
  • 3
    sort! измени array. Лучше делать my_array = @items.sort { |a, b| a.created_at <=> b.created_at }. Таким образом @items останься, не изменяя. Если ты хочешь изменить @items, тогда не необходимо распределять это в my_array –  23.01.2017, 14:10
  • 4
    Имей в виду tambié n, что упорядочивать это таким образом - гораздо менее работоспособное, что упорядочивать это с query в базу данных. –  23.01.2017, 14:11
  • 5
    @hcarreras ты имеешь razó n, лучше использовать sort, на этом упорядочивания вне query tambié n он относительный segú n случай, иногда предпочитают предотвращать связи в данные, когда обработка данных - ú nicamente усилие presentació n. –  23.01.2017, 16:04

Здесь процесс:

Внутри файла в config/initializers, смоги быть "will_paginate.rb", он присоединяется: require 'will_paginate/array'

И controller я у себя остаюсь таким:

def show
    @items = @enterprise.jobs + @enterprise.products
    @items = @items.sort! { |a, b|  a.created_at <=> b.created_at }
    @items = @items.reverse.paginate(:page => params[:page], :per_page => 4)
end

и вид шоу:

<%= will_paginate @items, :container => false %>
1
ответ дан 03.12.2019, 17:36

Теги

Похожие вопросы