【问题标题】:Ruby on rails tags [duplicate]Ruby on rails标签[重复]
【发布时间】:2012-07-05 08:59:38
【问题描述】:

可能重复:
Adding tags to posts in 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://g-p.si/posts/tagging-with-acts-as-taggable-on

我的问题是标签在我的帖子/显示页面上是可点击的,我被重定向到我的标签页面,并且 URL 看起来像 mysite/tagged?tag=ruby 但是我的标签页是空白的……

【问题讨论】:

标签: ruby-on-rails


【解决方案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

请注意,此代码未经测试,我从未将其用作可标记的,因此您应首先确定如何查询已标记的帖子。

【讨论】:

    【解决方案2】:

    几乎是对的,谢谢提示!你必须使用

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

    而不是

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

    它就像魔术一样工作! :)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-09-15
      • 1970-01-01
      • 2022-01-17
      • 2011-09-30
      • 2012-11-23
      • 2012-04-04
      • 2014-06-17
      相关资源
      最近更新 更多