【发布时间】:2011-09-20 01:21:39
【问题描述】:
我有这个方法可以将来自 Google 自定义搜索 API 的 10 个结果的链接放入一个数组中:
require 'json'
require 'open-uri'
def create
search = params[:search][:search]
base_url = "https://www.googleapis.com/customsearch/v1?"
stream = open("#{base_url}key=XXXXXXXXXXXXX&cx=XXXXXXXXXX&q=#{search}&start=#{i}&alt=json")
raise 'web service error' if (stream.status.first != '200')
result = JSON.parse(stream.read)
@new = []
result['items'].each do |r|
@new << r['link']
end
end
我的看法:
<% @new.each do |link| %>
<p><%= link %></p>
<% end %>
我无法弄清楚如何为此添加分页,以便在第二页上返回接下来的 10 个结果。我正在使用 Kaminari gem 进行分页。
我希望当用户点击另一个页面的链接时,我会从 Google 的 API 获取接下来的 10 个结果。您可以使用 API 的 start 参数来执行此操作,该参数指定要开始的第一个结果,我将其传递为 i。我正在考虑做这样的事情:
i = (params[:page] - 1) * 10 + 1
其中params[:page] 是当前页码,但由于某种原因它未定义。此外,我不确定如何为不是 AR 对象的数组设置分页,以及我认为会发生什么。感谢您的帮助,并随时使用您知道的任何分页 gem。
【问题讨论】:
标签: ruby-on-rails ruby ruby-on-rails-3 pagination