我有两个模型,指南和列表。我想显示最近10个指南和列表的供稿。
在Rails中执行此操作的最佳方法是什么?
我尝试通过控制器中的实例变量来实现它,但这似乎是错误的。有小费吗?谢谢
答案 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中执行此操作的最佳方法是什么?
在这种情况下,约定是定义范围而不是辅助方法。
在Guide
和Listing
模型中定义两个范围:
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)