0

我有一个在列表中显示事件的应用程序。事件可以为整个社区或组织者显示。

class CommunitiesController < ApplicationController
    def show
        @community = Community.find(params[:id])
    end
end

class OrganizersController < ApplicationController
    def show
        @organizer = Organizer.find(params[:id])
    end
end  

显示.html.erb:

<%= @community.events.limit(15).each do |event| %>
...
<% end %>

我想在列表末尾实现一个“加载更多事件”按钮,该按钮通过 ajax 调用分批 15 个加载顺序事件。

因此,为了良好的 MVC 设计,我有以下问题:

这个额外的动作(更多活动的请求)应该去哪里,在社区/组织者或活动中?或者甚至在其他地方因为它破坏了 REST?

逻辑应该在什么模型(或控制器?)中计算我们在序列中的位置以及发送什么?

4

1 回答 1

1

感觉像控制器逻辑。我会让控制器根据参数指定的某个索引提取适当的 15 条记录块:page,然后视图只显示它传递的任何内容,例如

page_size = 15 # configure this somewhere
...
@events = @community.events.offset(page_size * (params[:page] || 0).to_i).limit(page_size)

那么在你看来...

<%= @events.each do |event| %>
...
<% end %>

还有其他方法可以将其传递@events到您的视图中,并且可能是更好的分页方法,但这应该是基本思想。

于 2013-10-25T12:48:46.540 回答