【问题标题】:acts-as-taggable-on tag cloud problem充当可标记标签云问题
【发布时间】:2012-04-23 15:12:28
【问题描述】:

我是 Rails 新手。关于这个插件有一个问题。我已经阅读了官方自述文件和其他一些主题,但我仍然无法使其工作。 我已经安装了它,它非常适合创建标签,但我无法制作 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: 

我做错了什么?

【问题讨论】:

    标签: ruby-on-rails-3 acts-as-taggable-on


    【解决方案1】:

    我认为它为类添加了方法,因此您可以直接访问它们。

    你可以试试这个:

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

    这是我用过的,它有效。

    注意当您从站点视图中调用 tag_cloud 时,它正在调用控制器中的相应定义。您想在 tags_helper(在插件中)中调用 tag_cloud,因此您也需要在控制器中删除 tag_cloud 定义。

    一些可能有助于理解这一点的好主题是:

    • 方法查找(向右一步, 然后向上)和
    • 自我(如果从 ruby​​/rails 开始,很好理解)
    • 元编程(如果您不熟悉该术语)

    如果您是 ruby​​/rails 新手,那么一切都很好。

    希望对您有所帮助。

    【讨论】:

      【解决方案2】:

      我自己在这个例子中遇到了同样的问题。 还有其他一些问题。 我修复了遇到的问题以满足我的需求,即使它们可能会稍微偏离初衷。

      我通过将@tags = Site.tag_counts_on(:tags) 移动到索引方法来修复它。然后我删除了 tag_cloud 方法。 (反正也不平静。)

      我还更改了 link_to 以重定向到已标记项目的控制器。 这涉及到:

      • 将文本设置为 tag.name
      • 改变路径
      • 删除 :action =&gt; :tag:id =&gt; :tag.name
      • 添加要通过参数传入的键值标识符

      我还将标记类更改为不那么通用的东西。

      我完成的控制器方法:

      def index
        @list = List.new
        @tags = List.tag_counts_on(:tags)
      end
      

      我完成的视图sn-p:

      <% tag_cloud(@tags, %w(tag1 tag2 tag3 tag4)) do |tag, css_class| %>
        <%= link_to tag.name, lists_path(:id => tag.name), :class => css_class
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-05-28
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多