您应该在控制器中创建将要使用的数据集,而不是在视图中。你可以这样做:
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 %>
如果你有很多不同的可能性/属性,那可能会失控。在这种情况下,我可能会建议设置两个部分_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
or完全定制SecondModel
。