在 Rails 中查找 ActiveRecord 命令不起作用

find ActiveRecord command in Rails does not work

在我的应用程序的搜索功能中,用户可以输入搜索文本并从下拉列表中选择类别(主题)。

在我的控制器中的 do_search 操作中,我通过执行 Subject.find(params[:subject]).courses 找到课程,其中 params[:subject] 是每个Subject ("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

架构:课程 - 科目:多对多

subjects

  • s_id (the Subject ID): string
  • name: string

课程

  • code: string
  • name: string

包含

  • course_id: integer (primary key created by ActiveRecord for each course)
  • subject_id: integer (primary key created by ActiveRecord for each subject)

find 查找记录的数据库 ID,我认为这不是您实际搜索的内容。我想你真的想做 Subject.find_by(s_id: params[:subject]).courses