У меня есть методы, которые сортируют и позволяют пользователям просматривать страницы списков гостей в таблице. Они оба работают индивидуально, но я не могу заставить их работать вместе - последний предпочитает.
Я пытался использовать && и ||но первый будет применяться только.
class GuestlistsController < ApplicationController
before_action :set_guestlist, only: [:show, :edit, :update, :destroy]
helper_method :sort_column, :sort_direction
Guests_Size = 5
def index
@page = (params[:page] || 0).to_i
@guestlists = (Guestlist.offset(Guests_Size * @page).limit(Guests_Size))
@guestlists = (Guestlist.order(sort_column + " " + sort_direction))
respond_to do |format|
format.html
format.csv { send_data @guestlists.to_csv }
format.xls # { send_data @products.to_csv(col_sep: "\t") }
end
end
Помощник для сортировки
module ApplicationHelper
def sortable(column, title = nil)
title ||= column.titleize
css_class = column == sort_column ? "current #{sort_direction}" : nil
direction = column == sort_column && sort_direction == "asc" ? "desc" : "asc"
link_to title, {:sort => column, :direction => direction}, {:class => css_class}
end
end
Guestlist.html.erb Сортировки
<th scope="col"><%= sortable "firstname" %></th>
<th scope="col"><%= sortable "lastname" %></th>
<th scope="col"><%= sortable "email" %></th>
<th scope="col"><%= sortable "response" %></th>
<th scope="col"><%= sortable "dietary_requirements" %></th>
Пагинация
<ul class="pager">
<li class="previous <%= @page == 0 ? 'disabled' : '' %>">
<%= link_to_if @page > 0, "<< Previous", guestlists_path(page: @page - 1) %>
</li>
<li class="next">
<%= link_to "Next >>", guestlists_path(page: @page + 1) %>
</li>
</ul>
Я хочу, чтобы пользователи сортировали, но также могли отображать количество гостей на странице вместе.
Что происходит, происходит только одно.