RoR:将多个循环组合成数组,然后进行排列



我是RubyonRails的新手,我正试图弄清楚如何将查询组合成一个数组,按顺序排列,以便它们可以根据时间输出。

在我的控制器中,我有这个:

@tag_media_items = client.tag_recent_media('cats')
@location_media_items = client.location_recent_media('412421')

在我看来,我有这个:

<% @tag_media_items.each do |media| %>
<img src="<%= media.images.thumbnail.url%>">
<% end%>
<% @location_media_items.each do |media| %>
<img src="<%= media.images.thumbnail.url%>">
<% end%>

我还可以计算出它创建的时间:

<%= media.created_time %>

在每个循环上。

现在我正在学习如何将循环放入数组中,然后根据created_item进行排列?这有一个简单的语法吗?

谢谢!

<% (@tag_media_items+@location_media_items).each do |media| %>
   <img src="<%= media.images.thumbnail.url%>">
<% end%>

用于分拣:

<%(@tag_media_items+@location_media_items).
        sort{|a,b| a.created_at <=> b.created_at}.
        each do |media| %>

如果是同一个模型,我建议编写1个查询,而不是2个查询。

@media_items = client.recent_media_of_tag_and_location('cats', '412421')

如果你仍然需要2个查询并进行排序,你可以这样做,

控制器:

@media_items = @tag_media_items | @location_media_items 
@sorted_items = @media_items.sort_by &:created_at

视图:

<% @sorted_items.each do |media| %>
  <img src="<%= media.images.thumbnail.url%>">
<% end%>

相关内容

最新更新