我是铁杆新手。关于这个插件有一个问题。我已经阅读了官方自述文件和其他一些主题,但我仍然无法使其工作。 我已经安装了它,它非常适合创建标签,但我无法使 tagcloud
我已经完成了
module SitesHelper
include ActsAsTaggableOn::TagsHelper
end
class SiteController < ApplicationController
def tag_cloud
@tags = Site.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 %>
错误的参数数量(至少为1)
24: <b>Tags:</b>
25: <%= @site.type_list %>
26:
27: <% tag_cloud @site.type_list, %w(css1 css2 css3 css4) do |tag, css_class| %>
28: <%= link_to tag.name, { :action => :tag, :id => tag.name }, :class => css_class %>
29: <% end %>
30:
我做错了什么?
答案 0 :(得分:2)
我认为它为类添加了方法,因此您可以直接访问它们。
你可以试试这个:
<h2>Tag Cloud</h2>
<% if Site.tag_counts.length > 0 -%>
<% tag_cloud Site.tag_counts, %w(css1 css2 css3 css4) do |tag, css_class| -%>
<%= link_to tag.name, home_tag_path(tag), :class => css_class -%>
<% end -%>
<% else -%>
<%= content_tag :p, 'No tags' -%>
<% end -%>
这就是我使用过的,它有效。
N.B。当您从站点视图中调用tag_cloud时,它将调用控制器中的相应定义。您想在tags_helper中调用tag_cloud(在插件中),因此您也需要删除控制器中的tag_cloud定义。
要涵盖的一些好主题可能有助于理解这一点:
如果你不熟悉红宝石/铁轨,那么所有人都很高兴。
希望有所帮助。
答案 1 :(得分:0)
我自己也遇到了同样的问题。 还有一些其他问题。 我修复了我遇到的问题,即使它们可能略微偏离初衷。
我通过将@tags = Site.tag_counts_on(:tags)
移动到索引方法中来修复它。然后我删除了tag_cloud方法。 (无论如何,这不是很安静。)
我还更改了link_to以重定向到控制器以获取已标记的项目。 这涉及:
:action => :tag
和:id => :tag.name
我还将标记类更改为不太通用的类。
我完成的控制器方法:
def index
@list = List.new
@tags = List.tag_counts_on(:tags)
end
我完成的观看片段:
<% tag_cloud(@tags, %w(tag1 tag2 tag3 tag4)) do |tag, css_class| %>
<%= link_to tag.name, lists_path(:id => tag.name), :class => css_class