使用 will_paginate 对列进行二次排序

Secondary sorting of a column using will_paginate

Rails 6
will_paginate

在我的模型中,我有以下内容:

def index
  @books = Book.all.paginate page: params[:page], per_page: params[:per_page]
end

这将给我一个对象数组,每个对象都具有以下属性:

name
author_id

所以,在我看来,我可以做到以下几点:

th= sortable "name", "Name"
th= sortable "author_id", "Author ID"

但我真正想做的是显示作者姓名,我可以从书对象中获取,如下所示:

book.author.name

因为这本书属于作者

如何在 table 中添加一列作者姓名,并使该列排序 table?

你试过这样的东西吗?

controllers/books_controller.rb

  def index
    books_with_author = Book.all.map { |book|
      book.attributes.merge(author_name: book.author.name)
    }

    @books = books_with_author.paginate page: params[:page], per_page: params[:per_page]
  end

您也可以定义您的模型以备将来使用

models/book.rb

def author_name
  self.author.name
end