1

我正在使用 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。

无论有没有新模型,我总是得到:

ActiveRecord::StatementInvalid in Searches#show SQLite3::SQLException:没有这样的列:posts.food_ids

提前谢谢。

编辑

当我创建一个新帖子时,子类别不在帖子表中,而是在类别表中。我需要使帖子搜索能够使用集合复选框过滤子类别。

编辑 2

我尝试了很多东西,但我觉得我有点迷路了。

“真正的”问题是执行像 Railscasts #111 - Advanced Search Form 之类的搜索引擎,并使用带有“分类”的 Railscasts #17 - HABTML Checkboxes 之类的东西。

我需要的最终结果是,例如:搜索帖子并能够使用复选框集合过滤结果:

Post tile = My first post
Food = Name 1
Pet = Name 2

...

然后,仅显示包含“我的第一篇文章”之类的标题、“名称 1”之类的食物或 ID 之类的帖子,对于宠物也是如此。

再次,提前感谢您的支持。

4

1 回答 1

1

您在 where 子句键中使用food_ids而不是。food_id从错误中您可以理解,posts 表没有 food_ids 列,它有一个 food_id 列。

尝试:

posts = posts.where(food_id: food_ids) if food_ids.present?
于 2013-01-08T15:26:51.920 回答