0

Todo リストの週ビューを表示する Web アプリを設計する方法についてアドバイスを求めています。

現在のレイアウトは、下にリストされた実行する項目を列として示す曜日のテーブルです。コントローラーのヘッダー日付を次のように計算することで、機能するものを取得しました。

@week_starting = Date.today.at_beginning_of_week if @week_starting.blank?

他の平日のヘッダーは、@week_starting をインクリメントすることで表示されます。

@to_do_on_mon、@to_do_on_tue などの個々のインスタンス変数を作成して、その日に何をするかを示しました (そして、それらを繰り返し処理して項目を一覧表示します)。以下にその例を示します。

@to_do_on_mon = BatchTicket.where("Date(load_date) =?", @week_starting.strftime

このデザインをどのように改善して、表示されている週を簡単に増減し、実行する項目をリストアップしますか?

4

1 に答える 1

1

まず、個人的な好みですが、最初の行を次のように変更すると、コードがより適切になると思います。

@week_starting ||= Date.today.at_beginning_of_week

短くなり、より明確になりました。

あなたがそこで何をしようとしているのか理解できませんDate(load_date)が、ActiveSupport が利用可能であるため、おそらく次のようにもっと読みやすいことを行うでしょう。

@to_do_on_mon = BatchTicket.where date: (@week_starting + 0.days)
@to_do_on_tue = BatchTicket.where date: (@week_starting + 1.days)
# etc.

または、ページ/アプリの外観に応じて、必要に応じて 1 つのクエリで実行できます。

BatchTicket.where('your date range').group_by { |b| b.date.strftime("%u") }

日 (1..7) にグループ化された配列を返します。

それが役立つことを願っています

于 2013-06-19T07:12:22.640 に答える