按标签列表排序的Acts_As_Taggable排除当前文章

时间:2015-06-04 23:27:23

标签: ruby ruby-on-rails-4 tags resources acts-as-taggable-on

我使用Acts-As-Taggable-On

在Rails 4上

在我的文章展示页面上,我正在构建一个"相关文章"根据标签的部分。

我已经将它付诸实践,但它也包含了当前的文章。无法弄清楚如何显示所有相关文章但排除了它已经显示的文章。

以下是我在articles_controller中使用的内容:

@related_articles = Article.tagged_with(@article.tag_list, any: true)

这是我的观点:

<% @related_articles.each do |article| %>
  <%= link_to (image_tag article.image1(:small)), article %> 
  <h4 style="left"><%= link_to (article.specific.titleize), article, style:"color:#585858" %> </h4>
<% end %>

排除当前文章的最佳方法是什么?

1 个答案:

答案 0 :(得分:1)

我最终使用reject方法排除文章,如果它是正在显示的文章。

我在文章控制器的Show action中使用了这个:

@related_articles = Article.tagged_with(@article.tag_list, any: true).page(params[:page]).per(4)
@other_articles = @related_articles.reject {|article| article == @article}

然后迭代其他文章:

<% @other_articles.each_with_index do |article, i| %>
  <%= link_to (image_tag article.image1(:small)), article %> 
  <h4 style="left"><%= link_to (article.specific.titleize), article, style:"color:#585858" %> </h4>
<% end %>

像魅力一样工作。