매월 데이터를 수집하여 표시(년, 주, 일도 가능)

1840 단어 RailsRubytech

개시하다


매출액 등 매달 수치를 내놓고 표시하고 싶은 장면이 있었으면 한다.
이번에는 아래.
• 월별 데이터 확보
・ 이전 달과 다음 달의 페이지로 이동 가능
라는 페이지가 표시됩니다.
데이터는 Order로 사용됩니다.

시작 준비


# route.rb
Rails.application.routes.draw do
.
.
  get 'report', to: 'orders#report'
end

controller 처리


class OrdersController < ApplicationController
  def report
    # クエリストリングがあればTimeオブジェクトに変換、ない場合は現在の時刻を取得
    @month = params[:month] ? Date.parse(params[:month]) : Time.zone.today
    # 取得した時刻が含まれる月の範囲のデータを取得
    @orders = Order.where(updated_at: @month.all_month)
  end
end
두 번째 줄의@month.all_month부분의 allmonth 방법은 수신기의 타임 대상을 포함하는 달의range를 되돌려주기 때문에 월 데이터를 쉽게 얻을 수 있다.

view (지난달과 다음 달의 링크)


# report.html.erb
<%= link_to "前の月のリンク",report_path(month:@month.prev_month) %>
<%= link_to "次の月のリンク",report_path(month:@month.next_month) %>
데이터를 성형한 후view로 표시하면 월차 데이터용 페이지가 완성됩니다.

일, 주, 년 데이터


알다시피 Time 객체가 포함된 범위는 다음과 같습니다.
# 日のレンジ
Time.parse("2017-9-1").all_day
=> 2017-09-01 00:00:00 +0900..2017-09-01 23:59:59 +0900

# 週のレンジ
Time.parse("2017-9-1").all_week
=> 2017-08-28 00:00:00 +0900..2017-09-03 23:59:59 +0900

# 年のレンジ
Time.parse("2017-9-1").all_year
=> 2017-01-01 00:00:00 +0900..2017-12-31 23:59:59 +0900

참고 자료


16시간 확장

좋은 웹페이지 즐겨찾기