在 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
在我的应用程序的搜索功能中,用户可以输入搜索文本并从下拉列表中选择类别(主题)。
在我的控制器中的 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