0

私はカレンダーの宝石Eventsを使用して、私のクラスで基本的なカレンダーを生成しています。

私のアプリケーションヘルパーでは、それを呼び出すためのヘルパーメソッドを作成します。

def calendar
  @calendar ||= Cal::MonthlyCalendar.from_params params[:month], start_week_on: :sunday
end

カレンダーは、デフォルトの方法で日と週をループして月ごとのカレンダーを作成しますが、現在の週と次の週のみを表示するカレンダーを作成したいと思います。現在、私はifビューの大きなステートメントを介してこれを行っています:

...
<% calendar.weeks.each do |week| %>
  <tr>
    <% week.each do |day| %>
      <% if day.number >= Date.today.beginning_of_week(start_day = :sunday).day && day.date.month == Date.today.month %>
...

ご覧のとおり、それはあまり適切ではありません。オブジェクト自体ではなくても、このための「クラスメソッド」または「スコープ」を作成する方法はありますか?明らかに、上記は前月または将来の月を示していません。つまり、機能するにはさらに冗長にする必要があるため、よりエレガントなソリューションを探していました。しかし、私はその方法をどこに置くでしょうか?

助けてくれてありがとう!

4

1 に答える 1

0

結局、宝石よりもうまく機能するカレンダーを生成するための独自のメソッドを作成することになりました。答えを探しているこの質問に出くわした人には、サードパーティの宝石をモデルクラスに入れて(可能であれば)、そのようにスコープを定義することをお勧めします。しかし、私の目的のために必要なのは非常に基本的なカレンダー関数だけだったので、いくつかの組み込みRails関数を使用して基本的に日を循環するいくつかのメソッドを作成しました。

于 2012-11-29T03:14:49.650 に答える