Метод поиска Ruby on Rails - PullRequest
       1

Метод поиска Ruby on Rails

0 голосов
/ 15 октября 2018

Итак, я хочу, чтобы мой пользователь мог выполнять поиск по названию и описанию, поэтому я добавил эту строку кода.Вот ошибка, которую я получаю

неверное количество переменных связывания (1 для 2) в: title LIKE?или описание как?

 def index

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

end

Ответы [ 4 ]

0 голосов
/ 15 октября 2018

Вы также можете использовать этот камень под названием Ransack .Хотя сфокусировано на формах, вы все равно можете делать отличные простые поисковые запросы.Смотрите эту документацию: https://github.com/activerecord-hackery/ransack/wiki/Basic-Searching

0 голосов
/ 15 октября 2018

Рекомендуется проверять совпадение без учета регистра

 @posts = Post.where("LOWER(title) LIKE ? OR LOWER(description) LIKE ?", "%#{params[:search].downcase}%", "%#{params[:search].downcase}%").page(params[:page]).per(10)
0 голосов
/ 15 октября 2018

Вы можете назвать свои аргументы, когда используете хеш-синтаксис - например, назовите его просто :q:

@posts = Post
  .where('title LIKE :q or description LIKE :q', q: "%#{params[:search]}%")
  .page(params[:page]).per(10)
0 голосов
/ 15 октября 2018

вы используете два ? в этом утверждении.Итак, интерпретатор ожидает 2 аргумента для каждого ?.измените свой код так:

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

Дайте мне знать, если это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...