Rails4:Will_paginate宝石问题

时间:2014-10-26 10:50:47

标签: ruby-on-rails ruby

尝试将Will_paginate gem实现到我的rails应用程序中,收到错误 #的未定义方法`paginate'。 使用gem'will_paginate','〜> 3.0'

已将gem添加到我的gemfile并搜索controller.rb文件

class SearchController < ApplicationController
  def Home
    access_token = ENV["ACCESS_TOKEN"]
    client = Instagram.client(access_token: access_token)
    default_search = client.tag_search('pizza')

    if params[:q]
      search_query = client.tag_search(params[:q])
      @tag = search_query.present? ? search_query : default_search
    else
      @tag = default_search
    end

    @tag = @tag.first.name
    @results = client.tag_recent_media(@tag)**.paginate(:page => params[:page], :per_page => 4)**
  end

  def about
  end
 end

并添加到主页,以显示页码

<form action="?" method="get">
            <input type="text" name="q" placeholder="Search Instagram photos..." autofocus/>
        </form>

        <div class="row">
            <div class="col-lg-12">
                <h1 class="page-header">Welcome //
                    <small>It's Nice to Meet You!</small>
                </h1>
     </div>

        <div class="row">
        <% @results.each do |instagram| %>
            <div class="col-md-3">
            <%= image_tag instagram.images.low_resolution.url %>
            </div>
            <% end %>
        </div>
        <%= will_paginate @results %>
        <br/>

1 个答案:

答案 0 :(得分:1)

will_paginate只知道如何对开箱即用的ActiveRecord查询(以及可选的数组)进行分页。

虽然它不知道如何对任意apis进行分页。您可以使用WillPaginate::Collection来包装任何数据,但它看起来不像Instagram api非常适合这样:paginate会假设您可以跳到任意偏移,而不能使用api。 Instagram api不允许你这样做 - 你必须指定最大ID,你不知道除了下一页的结果之外会是什么。

简而言之,看起来你可以在Instagram api上合理地使用will_paginate