ransack에서 월별 검색 수행(Custom Predicates)
개요
ransack을 사용할 때 월간 검색을 사용하고 싶어서 다음과 같은 내용을 실현하였습니다.
↓ 예: 2020년 12월을 선택한 후 2020년 12/1-202/12/31 검색
이루어지다
검색용 술어(Predicate)를 만듭니다.
add_predicate에 술어를 추가하고 술어의 명칭은'during month'에서 실현된다.# config/initializers/ransack.rb
Ransack.configure do |config|
config.add_predicate :during_month,
:arel_predicate => :between,
:formatter => proc { |v|
unless v.month == 12 # 12月度以外の処理
#月末日をenddayに代入 v.monthを+1して最後にdateを1引くことで月末日を取得している。
endday = Time.zone.parse("#{v.year}-#{v.month + 1}-1").to_date - 1
else # 12月度の処理
# 12月度の時はv.monthはインクリメントしない(エラー回避)
# v.yearを+1で翌年に、monthは1月固定、
# 最後に1日に固定したdateを1引くことで12月の末日をenddayに代入している。
endday = Time.zone.parse("#{v.year + 1}-1-1").to_date - 1
end
#検索月の初日から月末日まで
Time.zone.parse("#{v.year}-#{v.month}-1").to_date..endday
},
:type => :date
end
View 측 설치<%= search_form_for "検索オブジェクト", url: "アクション" do |f| %>
<%= f.label :search_day, "期間"%>
<%= raw sprintf(
f.date_select(
:search_day_during_month,
discard_day: true,
use_month_numbers: true,
date_separator: '%s'),
'年 ') + '月' %>
<div class="actions ransack-submit"><%= f.submit "検索" %></div>
<% end %>
참고 자료
ransack에서 연간 검색 실시
https://qiita.com/tanakaworld/items/c7a2613589dadbb2ef4d
Custom Predicates · activerecord-hackery/ransack Wiki
https://github.com/activerecord-hackery/ransack/wiki/Custom-Predicates
Reference
이 문제에 관하여(ransack에서 월별 검색 수행(Custom Predicates)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/webzawa/items/f03b3483d382d4f20bc2
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
검색용 술어(Predicate)를 만듭니다.
add_predicate에 술어를 추가하고 술어의 명칭은'during month'에서 실현된다.
# config/initializers/ransack.rb
Ransack.configure do |config|
config.add_predicate :during_month,
:arel_predicate => :between,
:formatter => proc { |v|
unless v.month == 12 # 12月度以外の処理
#月末日をenddayに代入 v.monthを+1して最後にdateを1引くことで月末日を取得している。
endday = Time.zone.parse("#{v.year}-#{v.month + 1}-1").to_date - 1
else # 12月度の処理
# 12月度の時はv.monthはインクリメントしない(エラー回避)
# v.yearを+1で翌年に、monthは1月固定、
# 最後に1日に固定したdateを1引くことで12月の末日をenddayに代入している。
endday = Time.zone.parse("#{v.year + 1}-1-1").to_date - 1
end
#検索月の初日から月末日まで
Time.zone.parse("#{v.year}-#{v.month}-1").to_date..endday
},
:type => :date
end
View 측 설치<%= search_form_for "検索オブジェクト", url: "アクション" do |f| %>
<%= f.label :search_day, "期間"%>
<%= raw sprintf(
f.date_select(
:search_day_during_month,
discard_day: true,
use_month_numbers: true,
date_separator: '%s'),
'年 ') + '月' %>
<div class="actions ransack-submit"><%= f.submit "検索" %></div>
<% end %>
참고 자료
ransack에서 연간 검색 실시
https://qiita.com/tanakaworld/items/c7a2613589dadbb2ef4d
Custom Predicates · activerecord-hackery/ransack Wiki
https://github.com/activerecord-hackery/ransack/wiki/Custom-Predicates
Reference
이 문제에 관하여(ransack에서 월별 검색 수행(Custom Predicates)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/webzawa/items/f03b3483d382d4f20bc2
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(ransack에서 월별 검색 수행(Custom Predicates)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/webzawa/items/f03b3483d382d4f20bc2텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)