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:최종 효과:
Reference
이 문제에 관하여(Rails로 테이블의 Sort 및 Pargination 구현), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/DURIAN_JADE/items/61fd692f04600a6cf9ff텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)