0

重複の可能性:
Ruby on Rails での投稿へのタグの追加

(少なくとも私にとっては) シンプルだけどトリッキーな質問があります... サンプル アプリケーションのブログでタグを作成する最良の方法は何ですか? act-as-taggable を使用してタグを追加していますが、クリック可能にして、クリックするとそのタグが付いたすべての投稿が表示されるようにすることはできますか? よくわかりませんO___o

どんな助けでも大歓迎です!

これが私がこれまでにしたことです:

私の投稿コントローラーで

def tagged
  @posts = Post.all(:order => 'created_at DESC')
  @tags = Post.tag_counts_on(:tags)
  @tagged_posts = Post.tagged_with(params[:tags])  
  respond_to do |format|
    format.html # index.html.erb
    format.json { render :json => @posts }
  end
end

次に、私の投稿/ショービューで

<% unless @post.tags.empty? %>
<div class="category">Category: 
<% @post.tags.each do |t| %>
    <%= link_to t.name, {:tag => t.name, :action => "tagged", :controller => 'posts'} %>
<% end %>

私の投稿/タグ付きビューで

<% @tagged_posts.each do |post| %>
  <div class="entry">
    <h2><%= link_to post.title, post %></h2>
    <div class="content"><%= sanitize blog_truncate(post.content, :words => 100),:tags =>  %w(strong, b, a) %><br /><%= link_to "[read more]", post %>
      </div>
  </div>
<% end %>

私はこのガイドに大まかに従いました: http://gp.si/posts/tagging-with-acts-as-taggable-on

私の問題は、投稿/表示ページでタグをクリックできることです。タグ付けされたページにリダイレクトされ、URL は mysite/tagged?tag=ruby のようになりますが、タグ付けされたページは空白です...

4

2 に答える 2

1

ユーザーがクリックするタグの各リンクには、次のような href が必要です。

/posts?tag=my_tag_name

そして、投稿コントローラーで

class PostsController
  def index
     if params[:tag].present? 
       @posts = Post.where(tag: params[:tag])
     else 
       @posts = Post.all
     end
  end
end

このコードはテストされておらず、タグ付け可能としての機能を使用したことがないことに注意してください。そのため、タグ付けされた投稿を照会する方法を最初に確認する必要があります。

于 2012-07-04T23:58:15.737 に答える
0

それはほぼ正しいです、ヒントをありがとう!使用する必要があります

@posts = Post.tagged_with(params[:tag])

それ以外の

@posts = Post.where(tag: params[:tag])

そしてそれは魔法のように機能します!:)

于 2012-07-05T00:14:22.170 に答える