2012-11-10 136 views
0

我似乎無法找到一種方法來做到這一點。一些指導將會很棒!ActiveRecord的幫助:其中標籤包括

我正在建立一個博客網站的帖子和帖子包含標籤。標籤和帖子由連接表保持在一起。我可以通過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子句來簡化這一點?

謝謝!

編輯:

這裏是我的連接表

enter image description here

+0

請給出您的加入模型或型號代碼 – Lichtamberg

+0

@lichtamberg ok ive發佈了它。 – Deekor

回答

1

下一個方法應該返回後的標籤與標籤的數組:

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

你只需要繼續你的方法的第一行並添加上面的行。

請注意,要使其正常工作,您應該在模型中使用has_and_belongs_to_many定義您的帖子和標籤之間的關係。

+0

非常感謝。 – Deekor