我使用acts_as_taggable gem获取我的引脚的分类(标记),但我无法生成正确的云标记,以获取所有标记的列表(事实上我只有两个不同的标签)
在我的app / controllers / pins_controller.rb
中def tagged
if params[:tag].present?
@pins = Pin.tagged_with(params[:tag])
else
@pins = Pin.postall
end
end
def tag_cloud
Pin.find(:first).pins.tag_counts_on(:tags)
@tags = Pin.tag_counts_on(:tags)
end
应用程序/模型/ pin.rb
acts_as_taggable_on :tags
end
应用程序/助手/ pin_helpers.rb
module PinsHelper
include ActsAsTaggableOn::TagsHelper
end
在我的app / views / pins / index.html.erb
中<% 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 %>
但是当我尝试访问我的引脚索引时,我有:
NoMethodError in Pins#index
undefined method `empty?' for nil:NilClass
我做错了什么?我关注了acts_as_taggable gem的维基
编辑: 应用程序/控制器/ pins_controller.rb
def index
@pins = Pin.order(votes_count: :desc)
@pin_count = Pin.count
end
答案 0 :(得分:2)
您需要在index
方法中实际提取标记:
def index
@pins = Pin.order(votes_count: :desc)
@tags = Pin.tag_counts_on(:tags)
@pin_count = Pin.count
end