简体   繁体   English

如何解决Rails中Searchkick的未定义方法'paginate'?

[英]How to solve undefined method `paginate' for Searchkick in rails?

I am trying to use autocomplete with searchkick gem but I'm getting this error undefined method `paginate' for # here is my post_controller.rb file 我正在尝试对searchkick gem使用自动完成功能,但是我遇到了以下错误未定义方法'paginate',因为#这是我的post_controller.rb文件

 class PostsController < ApplicationController impressionist before_action :set_post, only: [:show, :edit, :update, :destroy] before_action :authenticate_user!, except: [:index, :show] def index @email = current_user.try(:email) if params[:category].blank? @posts = Post.search(params[:query]).paginate(page: params[:page], per_page: 10) else @category_id = Category.find_by(name: params[:category]).id @posts = Post.where(category_id: @category_id).paginate(page: params[:page], per_page: 10) end end def show end def new @post = current_user.posts.build end def edit end def create @post = current_user.posts.build(post_params) respond_to do |format| if @post.save format.html { redirect_to @post, notice: 'Post was successfully created.' } format.json { render :show, status: :created, location: @post } else format.html { render :new } format.json { render json: @post.errors, status: :unprocessable_entity } end end end def update respond_to do |format| if @post.update(post_params) format.html { redirect_to @post, notice: 'Post was successfully updated.' } format.json { render :show, status: :ok, location: @post } else format.html { render :edit } format.json { render json: @post.errors, status: :unprocessable_entity } end end end def destroy @post.destroy respond_to do |format| format.html { redirect_to posts_url, notice: 'Post was successfully destroyed.' } format.json { head :no_content } end end private def set_post @post = Post.find(params[:id]) @comments = @post.comments.all @comment = @post.comments.build end def post_params params.require(:post).permit(:title, :description, :video, :category_id) end def video self.link.split('/').last if self.link end def autocomplete render json: Post.search(params[:query], autocomplete: true, limit: 10).map(&:title) end end 

and the post.rb file is 而post.rb文件是

 class Post < ActiveRecord::Base is_impressionable has_many :comments belongs_to :category belongs_to :user searchkick autocomplete: ["title"] end 

and the index.html.erb file is 并且index.html.erb文件是

 <%- model_class = Post -%> <% @title="Know Your Operating System-posts" %> <div class="page-header"> <h1>Tips And Tricks For Your Operating System<small></small></h1> </div> <%= form_tag posts_path, class: "form-inline", method: :get do %> <div class="input-group input-group-lg"> <% if params[:query].present? %> <div class="input-group-btn"> <%= link_to "clear", posts_path, class: "btn btn-default" %> </div> <% end %> <%= text_field_tag :query, params[:query], class: "form-control", id: "post_search", autocomplete: "off" %> <div class="input-group-btn"> <%= submit_tag "Search", class: "btn btn-primary" %> </div> </div> <% end %> <table class="table table-striped"> <tbody> <% @posts.each do |post| %> <tr> <td><%= link_to post.title, post_path(post) %></td> <td> <% if current_user.try(:email) == 'kowshik16.kk@gmail.com' || current_user.try(:email) == 'chaitanyamalineni488@gmail.com' || current_user.try(:email) == 'harikirandev@gmail.com' || current_user.try(:email) == 'bobbasai33@gmail.com' || current_user.try(:email) == 'sreevaishu15@gmail.com' %> <%= post.impressionist_count %> <% end %> </td> <td> <% if post.user == current_user %> <%= link_to t('.edit', :default => t("helpers.links.edit")), edit_post_path(post), :class => 'btn btn-default btn-xs' %> <%= link_to t('.destroy', :default => t("helpers.links.destroy")), post_path(post), :method => :delete, :data => { :confirm => t('.confirm', :default => t("helpers.links.confirm", :default => 'Are you sure?')) }, :class => 'btn btn-xs btn-danger' %> <% end %> </td> </tr> <% end %> </tbody> </table> <table> <tbody> <tr> <td> <%= will_paginate @posts, inner_window: 2, outer_windows: 2 %> </td> </tr> </tbody> </table> 

Here is my gem file 这是我的宝石文件

 source 'https://rubygems.org' ruby "2.2.2" gem 'rails', '4.2.1' group :production do gem 'pg' gem 'rails_12factor' end gem 'searchkick' gem 'impressionist' gem 'mysql2' gem "therubyracer" gem "less-rails" gem 'sass-rails' gem 'uglifier' gem 'coffee-rails' gem "twitter-bootstrap-rails" gem 'jquery-rails' gem 'turbolinks' gem 'jbuilder' gem 'sdoc', '~> 0.4.0', group: :doc gem 'devise' gem 'will_paginate' gem 'mail_form', '~> 1.5', '>= 1.5.1' gem 'simple_form' gem 'ckeditor' gem 'carrierwave' gem 'mini_magick' gem 'activeadmin', github: 'gregbell/active_admin' group :development, :test do gem 'byebug' gem 'web-console' gem 'spring' end 

How can I solve the error 我该如何解决错误

In line 8 of posts_controller , change posts_controller第8行中,更改

@posts = Post.search(params[:query]).paginate(page: params[:page], per_page: 10)

to: 至:

@posts = Post.search(params[:query], page: params[:page], per_page: 10)

Searckick already has built-in support for will_paginate in the search method. Searckick已经在search方法中内置了对will_paginate支持

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM