0

私はレールが初めてです。このプラグインについて 1 つ質問があります。公式の readme ファイルとその他のトピックをいくつか読みましたが、まだ機能しません。インストールしました。タグの作成には問題なく動作しますが、 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: 

私は何を間違っていますか?

4

2 に答える 2

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

それは私が使用したものであり、機能します。

注: サイト ビュー内から tag_cloud を呼び出すと、コントローラー内の対応する定義が呼び出されます。(プラグインの)tags_helper で tag_cloud を呼び出したいので、コントローラーの tag_cloud 定義も削除する必要があります。

これを理解するのに役立ついくつかの良いトピックは次のとおりです。

  • メソッド ルックアップ (右に 1 ステップ、次に上) および
  • 自己 (Ruby/Rails で開始する場合は完全に理解しておくとよい)
  • メタプログラミング (この用語に慣れていない場合)

Ruby/Rails を初めて使用する場合は、すべて理解するのに役立ちます。

それが役立つことを願っています。

于 2011-01-13T09:10:05.423 に答える
0

私はこの例で同じ問題に遭遇しました。そして、他にもいくつかの問題があります。当初の意図から少しずれている可能性がありますが、自分のニーズに合わせて機能するように修正しました。

@tags = Site.tag_counts_on(:tags)index メソッドに移動して修正しました。次に、tag_cloud メソッドを削除しました。(とにかく落ち着きませんでした。)

また、タグ付けされたアイテムのコントローラーにリダイレクトするように link_to を変更しました。それには以下が含まれます:

  • テキストを tag.name に設定する
  • パスの変更
  • 削除: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
于 2012-04-21T07:48:55.417 に答える