未定义的方法`ransack&#39;对于#<product :: activerecord_relation ...>

时间:2017-06-12 08:37:01

标签: ruby-on-rails search rubygems

现在我正在审核网站。我想在我的登录页面上创建搜索功能。所以我安装了gemfile&#34; ransack&#34;。但是,当我把&#34; ransack&#34;在我的控制器上,错误&#34;未定义的方法`搜索&#39;为#&#34;发生在当地环境中。

虽然我重新启动了本地服务器和命令&#34; gem list ransack&#34;表明搜查已成功安装,我无法进行搜查......问题的原因可能是什么?谢谢你的阅读。

我的控制器是这样的

Product_controller.rb

class ProductsController < RankingController
  layout "review_site", :except => :show
  # before_action :authenticate_user!, only: :show
  def index
    @products = Product.order('id ASC').per_page_kaminari(params[:page]).per(10)
  end

  def show
    @product = Product.find(params[:id])
  end

  def search
    @products = Product.where('title LIKE(?)', "%#{params[:keyword]}%").per_page_kaminari(params[:page]).per(10)
  end

  def landing
    @q = Product.order('id ASC').per_page_kaminari(params[:page]).per(10).ransack(search_params)
    @products = @q.result(distinct: true)
  end
end

private
def search_params
  params.permit(:title_count)
end

1 个答案:

答案 0 :(得分:0)

你试图在activerecord集合上调用ransack,它应该在Model类上调用。

def landing
  @q = Product.ransack(search_params[:title_count])
  @products = @q.result(distinct: true).order('id ASC').page(params[:page]).per(10)
end

参考Usage