【问题标题】:Where does this "Load more" action go and where do I deal with the logic?这个“加载更多”动作在哪里,我在哪里处理逻辑?
【发布时间】:2013-11-04 14:07:20
【问题描述】:

我有一个应用程序在列表中显示事件。活动可以向整个社区展示,也可以由组织者展示。

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

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

show.html.erb:

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

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

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

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

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

【问题讨论】:

    标签: ruby-on-rails ruby design-patterns model-view-controller controller


    【解决方案1】:

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

    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 传递到您的视图中,并且可能是更好的分页方法,但这应该是基本思想。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-15
      • 2014-03-16
      • 1970-01-01
      • 2012-01-22
      • 2016-03-08
      • 2011-09-08
      相关资源
      最近更新 更多