2010-05-22 75 views
1

沒有找到我按照說明在:http://agilewebdevelopment.com/plugins/acts_as_taggable_on_steroids到標籤雲添加到我的觀點:輔助函數鑑於

控制器

class PostController < ApplicationController 
    def tag_cloud 
     @tags = Post.tag_counts 
    end 
end 

我還添加了tag_cloud方法作爲在控制器

並在視圖輔助方法:

<% tag_cloud @tags, %w(css1 css2 css3 css4) do |tag, css_class| %>     (line 1) 
    <%= link_to tag.name, { :action => :tag, :id => tag.name }, :class => css_class %> (line2) 
<% end %> (line 3) 

不過:

1)如果我沒有在控制器中添加helper_method :tag_cloud我得到一個undefined method錯誤tag_cloud

2)如果我不添加輔助方法獲得:wrong number of arguments (2 for 0)在同一行1我上面的示例代碼。

對此提出建議?

解決方案 我最終沒有做我在視圖中作爲示例代碼的東西。

相反,我這樣做:在控制器中定義

<% @post.tags.each do |tag| %> 
    <%= link_to(tag.name,tag,:class => "tag_cloud_item_link") %> 
<% end %> 

回答

2

1.

方法是除非你添加(你提到)的helper_method電話訪問了意見。

2.

你的方法tag_cloud您已經定義爲您的控制器不帶任何參數的幫手,但你試圖調用tag_cloud@tags%w(css1...),&塊。

您的tag_cloud方法將返回一個@tags實例變量,就是這樣。

從你提供的信息來看,你的工作是include TagsHelper在你的ApplicationHelper?我猜測,這定義了一個tag_cloud幫助器方法,它將接受你正試圖傳入的參數。

+0

是的,我確實在應用程序中包含了taghelper。 – cbrulak 2010-05-22 21:55:34

+0

其他所有「正常工作」?這看起來好像是某種衝突或插件沒有正確加載。你安裝插件後是否重新啓動了你的應用程序(我知道這聽起來很愚蠢)。你能粘貼你的完整錯誤嗎? – theIV 2010-05-22 21:59:50

+0

重新加載和其他東西正常工作。我通過使用@tags = tag_cloud,然後@ tags.each找到了解決辦法。我會發布更多的代碼和錯誤,謝謝 – cbrulak 2010-05-22 22:29:04

1

我遇到同樣的問題。就像OP一樣,將「tag_cloud」幫助器方法移動到TagHelper似乎擺脫了一些問題,但是在該過程中創建了「錯誤數量的參數」錯誤。

cbrulak說他找到了一份工作。你能否更新我們,並可能發送PM到「作爲標籤的行爲」作者https://github.com/mbleigh/acts-as-taggable-on