【问题标题】:liquid pagination in rails轨道中的液体分页
【发布时间】:2021-01-13 06:31:57
【问题描述】:

我在液体之外使用 will_paginate 并且效果很好。现在我尝试在流动视图中对集合进行分页。我找到了这个topic,它把我带到了这个source

集合是在我的控制器中创建的,如下所示:

collection_assign = object.items.collect {|x| x.to_drop}

to_drop 方法将每个项目都扔到放置表中:

  def to_drop
    Drops::ItemDrop.new self
  end

我将分配附加到模板并使用模板呈现它们。没有分页标签一切正常,因此数据被传递到流动视图并且标签正在工作。 “分页”标签也被注册并响应。但是像这样使用分页:

{% paginate items by 5 %}
{% for item in items %}
<p>{{ item.title }}</p>
{% endfor %}
{% endpaginate %}

抛出错误:

Liquid::SyntaxError (Liquid syntax error: Syntax Error in 'paginate' - Valid syntax: paginate <collection> by <number>)

我认为这个错误与集合有关,这显然是一个数组。液体期望什么样的集合类型,我如何将它传递给液体模板?

【问题讨论】:

    标签: ruby-on-rails pagination liquid


    【解决方案1】:

    如果有人遇到同样的问题,也许这个解决方案也适合你:

    我发现 will_paginate 仍在工作,当我将分页对象传递给液体但它只显示第一个“切片”时。这是解决方案的一个非常重要的步骤,因为现在我只需要传递特定的控制器以允许流动 will_paginate 的 url 可访问。这样一来,分页链接就可以通过在浏览器地址栏中键入来手动访问(例如“?page=2”)。

    之后,我在特定数据库中创建了一个新列。此列包含必要页面的计算值。页数的值是在辅助类中使用除法和模运算符计算的。必须在可能影响页数的所有控制器操作中实现帮助程序类,以便可以更新数据库中的值。

    在获得必要页数的值后,它也可以作为对象属性传递给liquid。现在可以在液体中的 for 循环中从头开始手动生成链接。

    我猜这是一种很老套的方式,也许不是最顺利的方式,但最重要的是,它有效!

    【讨论】:

      猜你喜欢
      • 2019-12-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-11
      • 1970-01-01
      相关资源
      最近更新 更多