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 という名前の新しいモデルを作成しました。Category.rb とまったく同じですが、検索リクエスト専用です。内部には、post_id、food_id、pet_id があります。

新しいモデルの有無にかかわらず、私は常に次のようになります。

ActiveRecord::StatementInvalid in Searches#show SQLite3::SQLException: no such column: posts.food_ids

事前に感謝します。

編集

新しい投稿を作成すると、サブカテゴリは Post テーブルではなく、Category テーブルに入ります。コレクションのチェックボックスでサブカテゴリをフィルタリングできるように、投稿検索を機能させる必要があります。

編集2

いろいろ試しましたが、ちょっと迷ったような気がします。

「本当の」問題は、Railscasts #111 - Advanced Search Form のような検索エンジンを実行し、Railscasts #17 - HABTML チェックボックスのようなものを「分類」とともに使用することです。

私が必要とする最終結果は、たとえば、投稿を検索し、チェックボックスコレクションで結果をフィルタリングできるようにすることです:

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 に答える