Ruby on Rails搜索方法

时间:2018-10-15 07:58:46

标签: ruby-on-rails ruby

所以我希望我的用户能够按标题和描述进行搜索,所以我添加了这一行代码。 这是我收到的错误

  

以下标题中的绑定变量数量错误(1代表2):要么   描述喜欢吗?

 def index

    @posts = Post.where(["title LIKE ? or description LIKE ?", "%#{params[:search]}%"]).page(params[:page]).per(10)

end

4 个答案:

答案 0 :(得分:1)

使用哈希语法时,您可以命名参数-例如,将其命名为:q

@posts = Post
  .where('title LIKE :q or description LIKE :q', q: "%#{params[:search]}%")
  .page(params[:page]).per(10)

答案 1 :(得分:0)

您在此语句中使用了两个?。因此,解释器期望每个?有2个参数。 将您的代码更改为此:

@posts = Post.where("title LIKE ? OR description LIKE ?", "%#{params[:search]}%", "%#{params[:search]}%").page(params[:page]).per(10)

让我知道是否有帮助。

答案 2 :(得分:0)

检查不区分大小写的匹配是一种好习惯

 @posts = Post.where("LOWER(title) LIKE ? OR LOWER(description) LIKE ?", "%#{params[:search].downcase}%", "%#{params[:search].downcase}%").page(params[:page]).per(10)

答案 3 :(得分:0)

您也可以使用名为ransack的gem。尽管只关注表单,但是您仍然可以进行简单的搜索查询。请参阅此文档:https://github.com/activerecord-hackery/ransack/wiki/Basic-Searching