我正在使用RailsCasts中的高级搜索表单(#111),但我想在子类别中使用集合复选框添加搜索的可能性。
class Category < ActiveRecord::Base
# post_id, food_id, pet_id
class Food < ActiveRecord::Base
# id, name
class Pet < ActiveRecord::Base
# id, name
class Post < ActiveRecord::Base
# id, title.
在我的search.rb模型中,我尝试过:
posts = posts.where(food_ids: food_ids) if food_ids.present?
我创建了一个名为:Subcategorysearch.rb的新模型,与Categoty.rb完全相同,但它仅用于搜索请求。里面我有:post_id,food_id,pet_id。
无论有没有新型号,我总是得到:
搜索#show中的ActiveRecord :: StatementInvalid SQLite3 :: SQLException:没有这样的列:posts.food_ids
先谢谢。
修改:
当我创建新帖子时,子类别不会出现在Post表中,而是出现在Category表中。我需要使Post搜索能够使用集合复选框子类别进行过滤。
编辑2
我尝试了很多东西,但我觉得我有点失落。
“真正的”问题是执行像Railscasts#111 - 高级搜索表单这样的搜索引擎,并使用像Railscasts#17 - HABTML Checkboxes这样的“分类”。
我需要的最终结果是,例如:搜索帖子并能够使用复选框集合过滤结果:
Post tile = My first post
Food = Name 1
Pet = Name 2
...
然后,只显示包含标题的帖子,如“我的第一个帖子”,食物如“名称1”或ID,以及相同的宠物。
再次感谢您的支持。
答案 0 :(得分:1)
您在where子句键中使用food_ids
而不是food_id
。
从错误中可以理解,posts表没有food_ids列,它有一个food_id列。
尝试:
posts = posts.where(food_id: food_ids) if food_ids.present?