2011-01-11 22 views
0

我是新來的鐵軌。有一個關於這個插件的問題。我已閱讀官方自述文件和其他幾個主題,但仍無法使其工作。 我已經安裝了它,它完美地創建標籤,但我不能讓tagcloudact-as-taggable-on標籤雲問題

我做

module SitesHelper 
    include ActsAsTaggableOn::TagsHelper 
    end 

     class SiteController < ApplicationController 
    def tag_cloud 
     @tags = Site.tag_counts_on(:tags) 
    end 
     end 

和視圖拋出我exeption上

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

我在做什麼錯?

回答

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定義。

一些好的主題,包括可能有助於理解這個是:

  • 方法查找(一步向右, 再向上)和
  • 自我(好全面地瞭解,如果開始對紅寶石/軌)
  • 元編程(如果你不熟悉這個術語)

各方面都不錯圍繞讓你的頭,如果你是新來的Ruby/Rails。

希望有所幫助。

0

我自己遇到了這個例子的同樣的問題。 還有其他一些問題。 我解決了我遇到的需求,即使他們可能會從最初的意圖中略微偏離。

我通過將@tags = Site.tag_counts_on(:tags)移動到索引方法中來修復它。然後我刪除了tag_cloud方法。 (無論如何,這並不是寧靜的。)

我還將link_to更改爲重定向到標記項目的控制器。 涉及:

  • 將文本設置爲標記。命名
  • 更改路徑
  • 去除:action => :tag:id => :tag.name
  • 將要通過PARAMS傳入

我也改變了標籤類通用少一些鍵值標識。

我的成品控制器的方法:

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