了解 Ruby on Rails 中的"@books = Book.all.page params[:page]"



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表中唯一的字段是country。我想也许这可以取代它,但唉,不。是的,我对此很陌生。感谢您的帮助。

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

本教程显然使用了分页宝石,我会选择kaminari,因为它是我使用的。

gemmonkey补丁关系包括方法pageper,正如您在Kaminari主页中清楚地看到的,该方法只接受page(page_number),并将使用SQL LIMITOFFSET来分割您的记录。params[:page]将是一个简单的HTTP GET参数?page=12

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

最新更新