如何限制在视图中加载的记录数?

HUS*_*TEN 3 ruby-on-rails view ruby-on-rails-3

此代码显示属于当前社区的CommunityTopic的所有记录.如何将数字限制为10条记录显示在这里?

<ul>
  <% @community.community_topics.each do |topic| %>
    <li>
    <%= link_to topic.title, community_topic_path(@community, topic) %>
    <%= link_to topic.user.user_profile.nickname, community_topic_path(@community, topic) %>
    </li>
  <% end %>
</ul>
Run Code Online (Sandbox Code Playgroud)

Fem*_*ref 8

使用limit方法:

<% @community.community_topics.limit(10).each do |topic| %>
Run Code Online (Sandbox Code Playgroud)

这只会将集合的前10个元素提供给块.如果你想要更复杂,你可以使用像will_paginate这样的东西.

通常,这种数据提取应该在控制器中进行.因此,不是拥有@community视图从中获取数据的变量,而是拥有一个@community_topics预先填充了要渲染的数据的变量.

  • 你最好使用`limit(10)`,因为`take`来自Array,并且所有的community_topics都将被提取到内存中,尽管只会显示10. (2认同)