我对 Ruby on Rails 很陌生,所以我可能缺少一个简单的解决方案。
tldr 版本 - 如何在该模型的索引页面上显示分配给特定模型的所有实例的不同(即不重复)标签的标签云上的 Acts As Taggable On 标签云?
更长的版本 - 我有一个名为 Video 的模型,在该模型中,我成功地使用Acts as Taggable On和这个精彩的教程实现了一个标记功能。
我现在想做的是,在视频的索引页面 (index.html.erb) 上,显示用户分配给单个视频的所有单个标签的摘要。例如,假设我有三个视频,每个视频标记如下:
Video 1: great, banana, book
Video 2: small, great, apple
Video 3: rubbish, small, banana
我希望索引页面显示以下标签列表:
great, banana, book, small, apple, rubbish.
我的模型(省略)的代码如下:
class Video < ActiveRecord::Base
attr_accessible :tag_list # Lots of other fields in here as well, but not relevant
acts_as_taggable_on :tags
end
我的视频助手中的代码如下:
module VideosHelper
include ActsAsTaggableOn::TagsHelper
end
最后,根据 gem 的文档,我在控制器中添加了以下代码:
class VideosController < ApplicationController
def tag_cloud
@tags = Video.tag_counts_on(:tags)
end
end
那么,我应该在视图的索引页面中添加什么代码?根据文档,我再次尝试了以下操作:
<% tag_cloud(@tags, %w(css1 css2 css3 css4)) do |tag, css_class| %>
<%= link_to tag.name, { :action => :tag, :id => tag.name }, :class => css_class %>
<% end %>
但是当我转到视频索引页面时,这会返回以下错误:
undefined method `empty?' for nil:NilClass
正如我所说,我显然遗漏了一些简单的东西,但我对 Rails(和 Ruby)完全陌生,所以我仍在寻找自己的脚。