在Rails中显示两个模型对象的“最新”列表

时间:2015-03-04 17:28:33

标签: ruby-on-rails ruby-on-rails-4

我有两个模型,指南和列表。我想显示最近10个指南和列表的供稿。

在Rails中执行此操作的最佳方法是什么?

我尝试通过控制器中的实例变量来实现它,但这似乎是错误的。有小费吗?谢谢

3 个答案:

答案 0 :(得分:0)

我的回答是:范围。您基本上是在问这个问题:How to create a scope to get the last ten transactions with rails3,但是当您使用Rails 4时,我建议您更多地了解指南中的范围:http://guides.rubyonrails.org/active_record_querying.html#scopes

答案 1 :(得分:0)

范围的替代方案。到达目的地总有多种方式。对于最新帖子的子集中的这种类型的快速插入,也可以使用可以从视图调用的辅助方法。它将返回一组记录,这些记录可以传递给部分渲染。您可以根据需要对结果进行组合和排序。 ((nbr_to_show)是我的实现,你可以直接使用一个值。)

在guides_helper.rb

   # Display the latest nbr_to_show guides
  def the_latest_guides(nbr_to_show)
    Guide.order("created_at DESC").limit(nbr_to_show)
  end  

也可以看到视图代码

<%= render partial: 'guides/guide_partial', collection: the_latest_guides(10)} %>   

答案 2 :(得分:0)

  

在Rails中执行此操作的最佳方法是什么?

在这种情况下,约定是定义范围而不是辅助方法。

GuideListing模型中定义两个范围:

guide.rb listing.rb

scope :latest_feed, ->(n) { order(created_at: :desc).limit(n) }

your_controller.rb

@latest_guides = Guide.latest_feed(5)
@latest_listings = Listing.latest_feed(5)