команда findRecord в Rails не работает - PullRequest
0 голосов
/ 06 марта 2020

В функции поиска моего приложения, где пользователь может ввести текст для поиска и выбрать категорию (тему) из выпадающего списка.

В действии do_search в моем контроллере я нахожу курсы, выполняя Subject.find (params [: subject]). Курсов где params [: subject] s_id (идентификатор субъекта) каждого субъекта ("1234-123", "4123-232", ...).

При запуске сервера я пытался выполнить поиск, но нет Результат найден. Я также проверил это в консоли rails, но также соответствует 0.

Это код действия do_search в моем контроллере:

def do_search
    if params[:subject].blank? && params[:search_text].blank?
      @courses = Course.all
    elsif !params[:subject].blank? && !params[:search_text].blank?
      @courses = Subject.find(params[:subject]).courses.where("UPPER(name) LIKE ?", "%#{params[:search_text].upcase}%")
    elsif !params[:subject].blank? 
      @courses = Subject.find(params[:subject]).courses
    else
      @courses = Course.where("UPPER(name) LIKE ?", "%#{params[:search_text].upcase}%")
    end
    return @courses
end

Схема: курсы - предметы: многие - to-many

субъектов

  • s_id (идентификатор субъекта): строка
  • имя: строка

курсы

  • код: строка
  • имя: строка

содержит

  • course_id: integer (первичный ключ, созданный ActiveRecord для каждого курса)
  • subject_id: integer (первичный ключ, созданный ActiveRecord для каждого предмета)

1 Ответ

2 голосов
/ 06 марта 2020

find ищет идентификатор базы данных записи, которую я не думаю, что вы на самом деле ищете. Я думаю, что вы действительно хотите сделать Subject.find_by(s_id: params[:subject]).courses

...