首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在Ruby On Rails 3.2.7的索引页面上显示标签云?

如何在Ruby On Rails 3.2.7的索引页面上显示标签云?
EN

Stack Overflow用户
提问于 2012-08-16 01:00:44
回答 1查看 1.5K关注 0票数 1

我是Ruby on Rails的新手,所以我可能缺少一个简单的解决方案。

tldr版本-如何在标签云上显示并作为可加标签的标签,这些标签分配给模型索引页面上的特定模型的所有实例?

更长的版本-我有一个名为视频的模型,在这个模型中,我已经成功地使用Acts as Taggable Onthis fantastic tutorial实现了标记功能。

我现在想做的是,在视频的索引页面(index.html.erb)上,显示用户分配给各个视频的所有单个标签的摘要。例如,假设我有三个视频,每个视频的标记如下:

代码语言:javascript
运行
复制
Video 1: great, banana, book
Video 2: small, great, apple
Video 3: rubbish, small, banana

我希望索引页面显示以下标签列表:

代码语言:javascript
运行
复制
great, banana, book, small, apple, rubbish.

我的模型(省略)的代码如下:

代码语言:javascript
运行
复制
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

我的视频助手中的代码如下:

代码语言:javascript
运行
复制
module VideosHelper

  include ActsAsTaggableOn::TagsHelper

end

最后,根据gem的文档,我将以下代码添加到我的控制器中:

代码语言:javascript
运行
复制
class VideosController < ApplicationController
  def tag_cloud
    @tags = Video.tag_counts_on(:tags)
  end
end

那么,我应该在视图的索引页面中添加什么代码呢?根据文档,我再次尝试了以下操作:

代码语言:javascript
运行
复制
<% 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 %>

但当我转到视频索引页面时,这将返回以下错误:

代码语言:javascript
运行
复制
undefined method `empty?' for nil:NilClass

正如我所说的,我显然遗漏了一些简单的东西,但我对Rails (和Ruby)完全陌生,所以我仍然在摸索中。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-08-16 19:27:30

好的,经过一些修改,我想我已经找到了一个解决方案,以防其他想知道如何做的人碰巧遇到这个问题。

但是,请注意,我是RoR的初学者,所以这可能不是最好的解决方案-如果我做错了什么,或者如果您有更好的解决方案,请随时让我知道!

在视图中添加以下代码,以便按顺序显示特定模型的标签列表:

代码语言:javascript
运行
复制
@tags = ActsAsTaggableOn::Tag.all(:order=>'name')

<% if @tags.count > 0 %>
  <ul>
    <% @tags.each do |tag| %>
      <li><%= link_to tag.name, tagged_url(:tag => tag.name) %></li>
    <% end %>
  </ul>
<% else %>
  <p>There are no tags on the system.</p>
<% end %>

这导致了一个非常基本的显示,由于我缺乏经验,我建议谨慎使用这种方法-我确信这不是最好的,甚至不是“最安全”的方法,所以要小心!

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11973700

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档