【问题标题】:Understanding "@books = Book.all.page params[:page]" in Ruby on Rails了解 Ruby on Rails 中的“@books = Book.all.page params[:page]”
【发布时间】:2015-09-22 03:56:36
【问题描述】:

looooong 时间读者和知识获取者,第一次海报。我已经开始学习 Rails,我肯定需要帮助。

我正在学习使用此代码的教程:

class BooksController < ApplicationController
  def index
    if params[:query].present?
      @books = Book.search(params[:query], page: params[:page])
    else
      @books = Book.all.page params[:page]
    end
  end

我正在尝试将其应用于我自己的项目(我有“目的地”而不是“书籍”)。我不明白的是 .page 参数是什么,它是从哪里生成的?

我的控制器上出现了一个“未定义的方法“页面”,但我不明白它是什么。

这是我的代码:

class DestinationsController < ApplicationController
def index
    if params[:query].present?
      @destination = Destination.search(params[:query], page: params[:page])
    else
      @destination = Destination.all.page params[:page]
    end
  end

我在 Destinations 表中的唯一字段是国家/地区。我想也许这可以取代它,但唉,不。是的,我对此很陌生。任何帮助表示赞赏。

【问题讨论】:

  • 来自 pagination gems will_paginatekaminari
  • 您必须安装两者中的任何一个才能工作。
  • 谢谢您,您为我指明了正确的方向,但几个小时后,导致主要问题的 javascript 文件的链接中有一个空格。但是,谢谢我现在知道分页参数了! :)

标签: ruby-on-rails ruby methods parameters controller


【解决方案1】:

您的编程知识有多深,尤其是 Ruby 知识?

本教程显然使用了分页 gem,我将使用 kaminari,因为它是我使用的。

gem monkey 补丁关系包含方法 pageper,正如您在 Kaminari 主页中清楚地看到的那样,该方法只接受 page(page_number) 并注意使用 SQL LIMIT 拆分您的记录和OFFSETparams[:page] 将是一个简单的 HTTP GET 参数 ?page=12

我注意到您也在使用Destination.search,这不是标准的,是您创建的吗?如果是,它可能应该类似于Destination.search(params[:query]).page(params[:page])。但是,如果它使用像 meta_search(你不应该)或 ransack 这样的东西,它们非常先进,你应该检查与 Kaminari 的兼容性,我很确定它存在于 Ransack 中

【讨论】:

  • 感谢@Fire-Dragon-DoL...我是一名前端开发人员,这是我第一次深入了解后端的奥秘。据我所知,除非我不理解你,否则我使用过:'Destination.search(params[:query]).page(params[:page])'。感谢您的提示,是的,我认为这是分页但没有提及。
  • 从我看到的代码中没有,你没有使用search.page,在你的问题中你清楚地写了Book.search(params[:query], page: params[:page])(页面作为参数传递,而不是链接)。要将它与我想您正在使用的 Ransack 一起使用,请检查以下答案:stackoverflow.com/a/17463115/312907 最后,您可以选择是否要对这些记录进行分页。如果是,您应该至少将gem 'kaminari' 添加到您的 Gemfile 中,并按照我的建议修复分页以进行搜查
  • “页面作为参数传递,未链接”。我现在看到了。我有很多要学习的。感谢您的帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-08-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多