ビューではなく、コントローラーで作業するデータセットを作成する必要があります。次のようなものでそれを行うことができます:
first_thing = FirstModel.all
second_thing = SecondModel.all
@both_things = (first_thing + second_thing).sort_by { |thing| thing.created_at }
ビューでデータセットを反復処理し、次のようなものを使用して属性を選択的に表示できます。
<% @both_things.each do |thing| %>
<%= thing.attribute_one if thing.is_a? FirstModel %>
<%= thing.attribute_two if thing.is_a? SecondModel %>
<% end %>
さまざまな可能性/属性がたくさんある場合、それは手に負えなくなる可能性があります。その場合、たとえば2 つのパーシャル_show_thing_one.html.erb
を設定することをお勧めします。_show_thing_two.html.erb
ビューで、表示されているものに基づいてパーシャルを選択的に使用します。
<% @both_things.each do |thing| %>
<% if thing.is_a?(FirstModel) %>
<%= render 'show_thing_one', thing: thing %>
<% elsif thing.is_a?(SecondModel) %>
<%= render 'show_thing_two', thing: thing %>
<% end %>
<% end %>
各パーシャルでは、変数thing
を使用して、渡される項目を参照できます (これthing: thing
は、行の一部render
が行っていることです。詳細については、こちらを参照してください)。FirstModel
したがって、各パーシャルはまたはに対して完全にカスタマイズできますSecondModel
。