ここでの簡単な例は、カレンダーなどのイベントのリスト、またはこのような単純な古いリストです。
Monday
- event1
- event2
Tuesday
- event3
これをアプリに実装する方法がわかりません。私が見ているように、2つのオプションがあります:
1. サーバー側
Day
サーバー上には、イベントをカプセル化するモデルが実際に存在するふりをします。つまり、あなたはこのようなことをするでしょう
def index
events = Event.recent.group_by { |e| e.starts_at.to_date }.to_a
days = data.map.with_index do |pair, index|
# ember data seems to break without the ID here
{ id: index, date: pair[0], events: pair[1] }
end
render json: { days: days }
end
次に、クライアントで、実際にDay
モデルを持っているふりをしますhasMany
Events
。
テンプレートは次のようになります
{{#each day in controller}}
<h2>{{day.date}}</h2>
{{#each event in day.events}}
<p>{{event.name}}</p>
{{/each}}
{{/each}}
2. クライアント側
これを正しく実装する方法はわかりませんが、基本的には、イベントのリストを返し、それらをクライアントでグループ化することを意味します。サーバーは次のようになります
def index
render json: Event.recent
end
ただし、最初の例のように、クライアントはテンプレートを反復するだけの単純な問題にはなりません。