6

Rails 3でacts_as_taggable_on v.2.0.3を使用して、投稿にタグを追加しています。ここで説明されているようにタグ クラウドを追加します: https://github.com/mbleigh/acts-as-taggable-onですが、エラーが発生しました: ActionController::RoutingError in Posts#index: No route matches {:action =>"タグ", :id=>"政治", :コントローラー=>"投稿"}. 私のコードは以下の通りです:

ポストヘルパー:

module PostsHelper
  include TagsHelper
end

モデル投稿:

class Post < ActiveRecord::Base
  ...
  acts_as_taggable_on :tags
end

ポストコントローラー

class PostController < ApplicationController
  ...
  def tag_cloud
    @tags = Post.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 %>

Routes.rb:

Blog::Application.routes.draw do
  root :to => "posts#index"
  resources :posts do
    member do
      post :notify_friend
    end
    collection do
      get :search
    end
    resources :comments
  end
  resources :users
  resource :session
  match '/login' => "sessions#new", :as => "login"
  match '/logout' => "sessions#destroy", :as => "logout"
end

私は何を間違っていますか?回答ありがとうございます。

4

2 に答える 2

7

うーん、私は理解していると思います。まず、routes.rb を次のように編集しました。

resources :posts do
  ...
  collection do
    get :tag
  end
end

次に、PostController にメソッド「Tag」を追加しました。

  def tag
    @posts = Post.tagged_with(params[:id])
    @tags = Post.tag_counts_on(:tags)
    render :action => 'index'
  end

できます!

于 2010-11-14T08:23:34.737 に答える
0

Rails4 では @muki_rails のアプローチが機能しませんでした。これは私がしたことです:

routes.rb

get 'tags/:tag' => 'articles#index', as: 'tag'

これで、ビューでこれを行うことができます (私はslimを使用しています):

- @article.tags.each do |tag|
  = link_to tag.name, tag_path(tag.name)

次にArticlesController、変数が設定されている場合はparams[:tag]、指定されたタスクに一致するすべての対応する記事を検索します。

  def index
    if params[:tag].present?
      @articles = Article.published.tagged_with(params[:tag])
    else
      @articles = Article.published
    end
  end
于 2016-05-26T09:39:54.030 に答える