Как добавить пагинацию в Каминари

Как добавить нумерацию страниц в feed_entries в категории?

Я использую каминари, монгоид 4, рельсы 4

Категория.rb

class Category
  def feed_entries
    FeedEntry.in(source_id: sources.map(&:id))
  end
end

показать.html.erb

<% @category.feed_entries.includes(:source).each do |feed_entry| %>
  <%= link_to feed_entry.name, feed_entry %>
  <%= feed_entry.source.title %>
<% end %>

Модели

class Category
  include Mongoid::Document
  field :name, type: String
  has_many :sources, dependent: :destroy
end

class FeedEntry
  include Mongoid::Document
  field :name, type: String
  belongs_to :source, touch: true
  validates :source_id, presence: true
end

class Source
  include Mongoid::Document
  field :title, type: String
  has_many :feed_entries, dependent: :destroy
  belongs_to :category, touch: true
end

person Anton Ipatov    schedule 18.02.2015    source источник


Ответы (1)


Что-то вроде этого должно работать

в ваших категориях контроллер

 def show 
     @category = Category.find(params[:id]) 
     @feed_entries = @category.sources.includes(:feed_entries).page(params[:page])
 end

С учетом

<%= @feed_entries.each do |feed_entry| %>
  <%= link_to feed_entry.name, feed_entry %>
  <%= feed_entry.source.title %>
<% end %>
<%= paginate @feed_entries %>
person Sonalkumar sute    schedule 18.02.2015
comment
не работает в category_controller.rb неопределенный метод `источники' для категории:Класс - person Anton Ipatov; 18.02.2015
comment
неопределенный метод «источники» для категории: класс - person Anton Ipatov; 18.02.2015
comment
Извините, категория была маленькой, мой плохой. Попробуй сейчас - person Sonalkumar sute; 18.02.2015
comment
та же проблема NameError (неопределенная локальная переменная или метод sources' for #<CategoriesController:0x007fd2d6e8b8f8>): app/controllers/categories_controller.rb:11:in show' - person Anton Ipatov; 18.02.2015
comment
неопределенный метод "источник" - person Anton Ipatov; 18.02.2015
comment
В виду правильно? но у feed_entry должно быть source, проверьте, есть ли в feed_entry source_id - person Sonalkumar sute; 18.02.2015
comment
не работает ActionView::Template::Error (неопределенное имя метода для #‹Source:0x007f8b7022deb0›): - person Anton Ipatov; 18.02.2015
comment
@AntonIpatov - Пожалуйста, проверьте значение @feed_entries в представлении, я думаю, что это исходный объект, если это так, вы можете попробовать что-то вроде feed_entry.feed_entries.first.name, feed_entry.title или в контроллере попробуйте изменить @category.feed_entries.includes(:source).page(params[:page]) на это, если мы получим feed_entries объект в представлении, а не исходный объект - person Sonalkumar sute; 18.02.2015
comment
Спасибо все работает с @category.feed_entries.includes(:source).page(params[:page]) но как добавить sort_by(&:score_count).reverse ? - person Anton Ipatov; 18.02.2015
comment
@feed_entries = @category.feed_entries.includes(:source) @feed_entries.sort_by! { |value| value.score_count } @feed_entries = @feed_entries.page(params[:page]) можно попробовать так - person Sonalkumar sute; 19.02.2015