在我的应用程序中,我有一个Factoids,每个都标记有不同的标签。我正在尝试创建一个列出所有标签的索引页面,并显示使用该标签标记了多少Factoids。我已经弄清楚如何生成标签列表但无法弄清楚如何计算。
我有三个Factoids,每个都用括号中的项目标记:
我要做的是打印一张表格,显示以下内容......
我在视图中有这个给我标签的名称,但我不知道如何计算它们的出现次数。
<% @tags.each do |tag| %>
<%= link_to tag.name, tag_path(tag.name) %>
<% end %>
我还设法编写了一个MySQL查询来实现它......
SELECT tags.name, count(tags.id) AS count
FROM `tags`
LEFT OUTER JOIN taggings ON taggings.tag_id = tags.id
GROUP BY tags.id;
如何在RoR中执行此查询?
这是我的DB Schema
ActiveRecord::Schema.define(:version => 20140423203020) do
create_table "factoids", :force => true do |t|
t.string "title"
t.text "description"
t.string "name"
t.datetime "created_at", :null => false
t.datetime "updated_at", :null => false
end
create_table "taggings", :force => true do |t|
t.integer "tag_id"
t.integer "taggable_id"
t.string "taggable_type"
t.integer "tagger_id"
t.string "tagger_type"
t.string "context", :limit => 128
t.datetime "created_at"
end
create_table "tags", :force => true do |t|
t.string "name"
end
# Foreign Keys and indexes for taggings
add_index("taggings", ["tag_id"], :name => "index_taggings_on_tag_id")
add_index("taggings", ["taggable_id", "taggable_type", "context"], :name => "index_taggings_on_taggable_id_and_taggable_type_and_context")
end
答案 0 :(得分:1)
想出办法。
<% Factoid.tag_counts.each do |tag| %>
<tr>
<td><%= link_to tag.name, tag_path(tag.name) %></td>
<td><%= tag.count %></td>
</tr>
<% end %>