我無法圍繞如何做到這一點,希望有人能夠幫助 - 我相信這將是簡單的事情!通過協會尋找數據
我試圖在我的rails應用程序中從頭開始實現「標籤雲」(與在railscasts.com上發佈的情節非常類似),但增加了複雜性,我只想在我的「雲中顯示標記「,這與返回的結果有關。例如,假設在索引視圖中,用戶已經過濾結果。我的願望是隻顯示過濾結果集中的標籤。
我有包含它們之間的關聯HABTM兩種型號:
class Article < ActiveRecord::Base
has_and_belongs_to_many :tags
...
end
class Tag < ActiveRecord::Base
has_and_belongs_to_many :articles
...
end
在我的文章控制器,我有一個@articles變量,它給我顯示在我的指標作用的結果。對於這種解釋的目的,讓我們說這是:
@article = Article.all
什麼我想我能夠做的就是打電話@ article.tags,希望它會返回相關的標籤爲結果中的所有文章。我認爲我可以對它們進行分組和遍歷,並在雲中顯示它們。但是,這會引發「未定義的方法錯誤」。
我已經打在軌控制檯和發現,如果我跑:
>> @articles = Article.find(1)
>> @articles.tags
則與該文章相關的所有標籤退給我。你爲什麼不能在.all上打電話?
如果我是使用SQL直接我會做這樣的事情:
SELECT name, COUNT(*)
FROM tags INNER JOIN articles_tags on ... INNER JOIN articles on...
WHERE // filtered results
GROUP BY name
我想這是什麼,我試圖做的,但使用Rails的查詢行話簡化等效。
任何想法?
這我指出了正確的方向。下面的工作:Tag.joins(:articles).where(id:@artcles) – Wilko 2014-10-30 19:26:45