所以我希望我的用户能够按标题和描述进行搜索,所以我添加了这一行代码。 这是我收到的错误
以下标题中的绑定变量数量错误(1代表2):要么 描述喜欢吗?
def index
@posts = Post.where(["title LIKE ? or description LIKE ?", "%#{params[:search]}%"]).page(params[:page]).per(10)
end
答案 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