Rails로 테이블의 Sort 및 Pargination 구현

7842 단어 Rails

결실



실현 방법


'rails table sort'라는 키워드로 구글을 검색하면 다음 글이 나온다.
https://www.virment.com/rails-sortable-table/
큰 도움을 주셔서 작가님께 감사하고 싶어요.
이 글은 Sort밖에 없으니까 Pargination까지 붙이면 어떡해요
정리는 다음과 같다.
①Help method 추가
transactions_helper.rb
module TransactionsHelper

    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

    def sort_direction
        %w[asc desc].include?(params[:direction]) ?  params[:direction] : "asc"
    end

    def sort_column
        Transaction.column_names.include?(params[:sort]) ? params[:sort] : "occurred_date"
    end

end
루비의 초보자이기 때문에 솔직히 이 인코딩은 아직 잘 모르겠지만, 대체적으로 결과가 나왔기 때문에 당분간은 기쁘다.앞으로 충분히 이해할 수 있도록 노력하겠습니다.
② controller 수정 index는 다음과 같습니다.
transactions_controller.rb
include TransactionsHelper

  def index
    @transactions = Transaction.paginate(page: params[:page], per_page: 8).order(sort_column + ' ' + sort_direction)
  end
③index.html.eb 수정
index.html.erb
<%= will_paginate %>    <-----追加
<中略>
<th><%= sortable "occurred_date", "発生日" %></th>
<略>
이상.
[2018년 12월 29일 업데이트!]
나는 위의 코드를 이해했다.
자신이 다시 쓴 코드는 다음과 같다.
transactions_helper.rb
    def sort_asc(column_to_be_sorted)
        link_to "▲", {:column => column_to_be_sorted, :direction => "asc"}
    end

    def sort_desc(column_to_be_sorted)
        link_to "▼", {:column => column_to_be_sorted, :direction => "desc"}
    end

    def sort_direction
        # If params[:direction] is nil, set sort_direction to "desc" by default
        %W[asc desc].include?(params[:direction]) ? params[:direction] : "desc"
    end

    def sort_column
        # If params[:column] is nil, set sort_column to "occurred_date" by default
        Transaction.column_names.include?(params[:column]) ? params[:column] : "occurred_date"
    end
transactions/index.html.erb:

최종 효과:

좋은 웹페이지 즐겨찾기