如何显示从充当加标签在Ruby中的索引页上on Rails的3.2.7标签云?(How to dis

2019-10-17 04:07发布

我很新的Ruby on Rails的,所以可能有一个简单的解决方案,我很想念。

该tldr版本 - 我怎么显示充当的不同加标签在标签云(即无重复)标签分配给特定模型的所有实例该模型的索引页?

更长的版本-我有一个名为视频模式中,我已经成功地设法实现使用标记功能充当加标签在和这个梦幻般的教程 。

我想现在要做的是,视频的索引页(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

最后,按照创业板的文档,我下面的代码添加到我的控制器:

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

正如我说的,我显然失去了一些东西简单,但我完全新的铁轨(和Ruby),所以我还在摸索。

Answer 1:

OK,黑客约一点后,我我已经找到了解决办法,如果任何人想知道如何做到这一点恰好碰到这个问题上跌倒。

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

在视图中添加此代码显示为以特定模式标记列表:

@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 %>

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



文章来源: How to display a tag cloud from Acts as Taggable On on an index page in Ruby on Rails 3.2.7?