ruby-on-rails - 在 Rails 中查找 ActiveRecord 命令不起作用
问题描述
在我的应用程序的搜索功能中,用户可以输入搜索文本并从下拉列表中选择类别(主题)。
在我的控制器的 do_search 操作中,我通过执行Subject.find(params[:subject]).courses找到课程,其中params[:subject]是每个主题的s_id(主题 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
架构:课程 - 科目:多对多
科目
- s_id(主题 ID):字符串
- 名称:字符串
培训班
- 代码:字符串
- 名称:字符串
包含
- course_id:整数(ActiveRecord 为每门课程创建的主键)
- subject_id:整数(ActiveRecord 为每个主题创建的主键)
解决方案
find
查找记录的数据库 ID,我认为这不是您实际搜索的内容。我想你真的想做Subject.find_by(s_id: params[:subject]).courses
推荐阅读
- makefile - 使用 makefile 自动创建目录
- javascript - react-native CLI 应该是本地模块还是全局模块?
- c - task_struct -> parent 总是指向根进程而不是实际的父进程
- spring-security-oauth2 - Zuul 网关未携带授权标头
- php - 如何在创建方法 laravel6 后重定向用户?
- batch-file - 批处理文件findstr,如何?
- html - How to merge two forms into one?
- c# - 为什么 SQL Server XML 数据类型会在插入和检索时更改数字签名块中特定属性的顺序?
- c# - Swagger C# 枚举生成 - 基础 int 值与原始枚举不匹配
- c# - 无法在 xamarin android 中覆盖 AttachBaseContext()