了解 Rails Ruby 中的“@books = Book.all.page params[:page]”
Understanding "@books = Book.all.page params[:page]" in Ruby on Rails
looooong 时间 reader 和知识获取者,第一次海报。我已经开始学习 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
我正在尝试将其应用到我自己的项目中(我有 'destinations' 而不是 'books')。我不明白的是 .page 参数是什么,它是从哪里生成的?
我在控制器上收到一个 "undefined method " 页面,但我不明白它是什么。
这是我的代码:
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
我在目的地 table 中唯一的字段是国家/地区。我想也许这可以取代它,但唉,不行。是的,我对此很陌生。任何帮助表示赞赏。
您的编程知识有多深,尤其是Ruby?
教程显然使用了分页 gem,我将采用 kaminari,因为这是我使用的。
gem monkey patches relation to include the method page
and per
, 正如你在 Kaminari 主页上清楚看到的那样,该方法简单地接受 page(page_number)
和将注意使用 SQL LIMIT
和 OFFSET
拆分您的记录。 params[:page]
将是一个简单的 HTTP GET
参数 ?page=12
.
我注意到您也在使用 Destination.search
,这不是标准的,是您创建的吗?如果是,它可能应该类似于 Destination.search(params[:query]).page(params[:page])
。但是,如果它使用 meta_search (which you shouldn't) or ransack 之类的东西,它们就非常先进,你应该检查与 Kaminari 的兼容性,我很确定它存在于 Ransack
中
looooong 时间 reader 和知识获取者,第一次海报。我已经开始学习 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
我正在尝试将其应用到我自己的项目中(我有 'destinations' 而不是 'books')。我不明白的是 .page 参数是什么,它是从哪里生成的?
我在控制器上收到一个 "undefined method " 页面,但我不明白它是什么。
这是我的代码:
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
我在目的地 table 中唯一的字段是国家/地区。我想也许这可以取代它,但唉,不行。是的,我对此很陌生。任何帮助表示赞赏。
您的编程知识有多深,尤其是Ruby?
教程显然使用了分页 gem,我将采用 kaminari,因为这是我使用的。
gem monkey patches relation to include the method page
and per
, 正如你在 Kaminari 主页上清楚看到的那样,该方法简单地接受 page(page_number)
和将注意使用 SQL LIMIT
和 OFFSET
拆分您的记录。 params[:page]
将是一个简单的 HTTP GET
参数 ?page=12
.
我注意到您也在使用 Destination.search
,这不是标准的,是您创建的吗?如果是,它可能应该类似于 Destination.search(params[:query]).page(params[:page])
。但是,如果它使用 meta_search (which you shouldn't) or ransack 之类的东西,它们就非常先进,你应该检查与 Kaminari 的兼容性,我很确定它存在于 Ransack