2011-01-11 15 views
0

私はレールを使い慣れています。このプラグインについて1つの質問があります。私は公式のreadmeファイルや他のいくつかのトピックを読んだことがありますが、それでも動作させることはできません。 私はそれをインストールしている、それはタグを作成するために完璧に動作しますが、私はtagcloudtag-on-taggable-onタグの雲の問題

を作ることができない私は

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 %> 
で私exeptionをスローします

引数の数が間違っている(少なくとも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定義も削除したいと思うでしょう。 /ルビーに開始する場合は、完全に理解するために(最大右へ一歩、 )

  • メソッドの検索と
  • セルフ(良い:

    それをカバーするためにいくつかの良いトピックは、これがあると理解するのに役立つかもしれませんレール)

  • メタプログラミング(あなたが用語に精通していない場合)

すべては、あなたが/レールルビーを初めて使用する場合は周りにあなたの頭を取得してもいいです。

希望に役立ちます。

0

この例では、同じ問題が発生しました。 他にもいくつかの問題があります。 私は自分のニーズに合ったものを修正しましたが、元の意図から少しでも逸脱しているかもしれません。

@tags = Site.tag_counts_on(:tags)をインデックスメソッドに移動して修正しました。その後、tag_cloudメソッドを削除しました。 (とにかく安らかではありませんでした)

また、タグ付けされた項目のコントローラにリダイレクトするようにlink_toを変更しました。 関係者:

  • テキストをタグに設定します。私もあまり一般的なものにタグクラスを変更し

のparamsを介して渡されるキー値の識別子を追加する: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