我正在尝试在一些使用Kaminari Gem来实现分页的现有代码之上实现搜索功能。但这可能并不重要。我无法弄清楚(因为我对rails / ruby相当新)是方法链。以下代码抛出此错误:
SQLite3 :: SQLException:没有这样的列:name:SELECT COUNT(*)FROM" courses"在哪里(名字喜欢'%1%')
# GET /courses
# GET /courses.json
def index
# @courses = Course.order(:title).page params[:page]
if logged_in?(:site_admin)
# @courses = Course.page(params[:page]).per(5)
@courses = Course.search(params[:term]).page(params[:page]).per(5)
else
# @courses = Course.offered.page(params[:page]).per(5)
@courses = Course.offered.search(params[:term]).page(params[:page]).per(5)
end
end
注释掉的两行没有添加search(params[:term])
模型中的搜索方法:
def self.search(term)
if term
where('name LIKE ?', "%#{term}%").order('id DESC')
else
order('id DESC')
end
另外,我正在关注教程:https://rubyplus.com/articles/3381-Simple-Search-Form-in-Rails-5
答案 0 :(得分:0)
您似乎name
内没有Course
。或者你忘记了你的迁移?
要知道您的数据库中是否包含它,请查看您的架构db/schema.rb
,您应该找到类似的内容:
create_table "courses" do |t|
t.integer "courses_id"
t.string "name"
t.datetime "created_at"
t.datetime "updated_at"
end
注意t.string "name"
。如果您没有,那么您应该生成一个迁移来创建它。
rails g migration add_name_to_courses name:string
应该这样做。
答案 1 :(得分:0)
我建议您使用ransack gem,这很简单,优化并会增加您的搜索优化。你可以相应地修改它。