0

私の Rails アプリケーションでは、いくつかの条件に基づいて検索を実行する必要があります。何百万ものレコードがあるため、ページネーションを実行する必要があります。will_paginate を試してみました。私が得ている出力は、「[]:Array の未定義のメソッド `total_pages'」です。

私のコントローラー:

class TweetsController<ApplicationController
  def index
    city = params[:show]
    search_term = params[:text]        

    search_term.gsub!(/\s/, '%')
    city_coordinates = Coordinates.where('city=?', city)

    @tweets = if (city_coordinates.count == 1 && city_coordinates.first.valid_location?)
      @tweets = Tweets.for_coordinates(city_coordinates.first).paginate(page: params[:page], per_page: 50) &  Tweets.where("tweet_text LIKE?" , "%#{search_term}%").paginate(page: params[:page], per_page: 50)
    else if (city_coordinates.count != 1 )
      @tweets = Tweets.for_user_location(city).paginate(page: params[:page], per_page: 50) &  Tweets.where("tweet_text LIKE?" , "%#{search_term}%").paginate(page: params[:page], per_page: 50)
    else
      @tweets = Tweets.where("tweet_text LIKE? ", "%#{search_term}%").paginate(page: params[:page], per_page: 50)
    end
    end
  end
end

私の見解:

<%= will_paginate @tweets %>
<% @tweets.each do |tweets| %>
<ul>
  <li><%= tweets.id %></li>
  <li><%= tweets.tweet_created_at %></li>    
  <li><%= tweets.tweet_source %></li>
  <li><%= tweets.tweet_text %></li>
  <li><%= tweets.user_id %></li>
  <li><%= tweets.user_name %></li>
  <li><%= tweets.user_sc_name %></li>
  <li><%= tweets.user_loc %></li>
  <li><%= tweets.user_img %></li>
  <li><%= tweets.longitude %></li>
  <li><%= tweets.latitude %></li>
  <li><%= tweets.place %></li>
  <li><%= tweets.country %></li>
<% end %>
</ul>

will_paginate を使ってみましたが、うまくいきません。私が得ているエラーは、「[]:Array の未定義のメソッド `total_pages'」です。私は何を間違えましたか?

4

1 に答える 1

3

@tweetsは配列であり、will_paginateデフォルトでは配列では機能しません。この動作を有効にするには、次のconfig/initalizers行で新しいファイルを追加します。

require 'will_paginate/array'
于 2013-08-20T14:14:32.487 に答える