0

これを行う方法が見つからないようです。いくつかのガイダンスは素晴らしいでしょう!

投稿と投稿にタグが含まれているブログのようなサイトを構築しています。タグと投稿は、結合テーブルによってまとめられています。経由でアクセスできますpost.tags

特定のタグを含むすべての投稿を表示するために検索をまとめようとしています。しばらく試した後、これが私が思いついた最高のものです:

def tag
 tag = Tag.find_by_title(params[:id])
 p = Post.page(params[:page]).per_page(7).all
 @posts = Array.new
 p.each do |p|
  if p.tags.include? (tag)
    @posts << p
  end
end

これは、ページネーションを除いてすべて機能します。これを単純化するには、単純なwhere句が必要だと思いますか?

ありがとう!

編集:

これが私の結合テーブルです

ここに画像の説明を入力

4

1 に答える 1

1

次のメソッドは、タグでタグ付けされた投稿の配列を返す必要があります:

@posts = Post.includes(:tags).where('tags.id' => tag.id)

メソッドの最初の行を保持し、その後に上記の行を追加するだけです。

それを機能させるには、モデル内の投稿とタグの間の関係を で定義する必要があることに注意してくださいhas_and_belongs_to_many

于 2012-11-10T19:53:31.517 に答える