在一个视图中对多个模型进行排序 table

Sorting multiple models in one view table

我有一个模型,其中包含各种不同类型的信息。

Opportunity.rb

has_many :notes
has_many :emails
has_many :calls

我目前在显示页面上有 3 个 tables,我在控制器中调用

@notes = @opportunity.notes.sorted
@emails = @opportunity.emails.sorted
@calls = @opportunity.calls.sorted

并在 3 table 秒内显示它们

我想按时间顺序对它们进行排序,以便获得时间表。

每个模型都有日期,我想按日期排序,然后 return 按日期顺序排列对象。 IE。 table 是:

Note | Content | 11-Feb | Bob
Call | Content | 07-Feb | Dave
Email | Content | 04-Feb | Steve
Call | Content | 03-Feb | Dave    
Note | Content | 01-Feb | Margaret

我不知道如何将控制器中的那些 table 合并到我可以在视图中使用的对象中,以便我可以创建 table,按日期排序 ( "created_at") 并且仍然保持一切看起来干净整洁。

最简单的方法是将 3 个集合组合成一个数组,然后按 created_at 排序。在您的控制器中:

@combined = (@notes + @emails + @calls).sort_by {|record| record.created_at}

然后您可以在您的视图中使用 @combined 来显示时间线。