我有一个简单而棘手的问题(至少对我来说)问题...在我的示例应用程序博客中创建标记的最佳方法是什么? 我正在使用act-as-taggable添加标签,但是我可以将它们设为可点击,这样当人们点击它时,所有带有该标签的帖子都会显示出来吗? 我不能完全理解它___ 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://g-p.si/posts/tagging-with-acts-as-taggable-on
我的问题是我的帖子/显示页面上的标签是可点击的,我被重定向到我的标记页面,网址看起来像mysite / tagged?tag = ruby 但我的标记页面是空白的......
答案 0 :(得分: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
请注意,此代码未经过测试,我从未将act用作标记,因此您应首先确定如何查询已标记的帖子。
答案 1 :(得分:0)
这几乎是正确的,谢谢你的暗示!你必须使用
@posts = Post.tagged_with(params[:tag])
而不是
@posts = Post.where(tag: params[:tag])
它就像魔法一样! :)