Полагаю, это потому, что нет такого столбца ( School
) Book
. Вам нужно присоединиться к таблицам, чтобы получить доступ также к столбцам модели School
.
Я тестировал сортировку на модели Author
Book
, где , довольно похоже на вашу. Для сортировки на работу мне понравилось следующее:belongs_to :author
sort_by = params[:sort] || 'author_name' @books = Book.joins(:author).select('books.name AS book_name, authors.name AS author_name').order(sort_by)
В контроллере есть таблица соединений, обратите внимание на псевдонимы (AS):
sort_by
Я использовал, name
чтобы избежать неоднозначной колонки name
, так как для меня есть столбец имен в обеих моделях.
Тогда в поле зрения:
<p>id | <%= sortable 'book_name', 'Book' %> | <%= sortable 'author_name', 'Author' %></p>
<% @books.each do |book| %>
<p><%= book.book_name %> | <%= book.author_name %> </p>
<% end %>