如何从相关项目搜索中排除当前项目

时间:2019-01-19 00:12:21

标签: ruby-on-rails ruby

我有一个帖子视图,我想在其中显示相关的帖子,但现在我还包括当前帖子。

如何从搜索中删除当前项目?

在这种情况下,我什至不知道如何使用where.not()!=,或者它们甚至不是最好的使用方式。

这就是我在展后视图中看到的东西

<% @related[@post.blog_category_id]&.each do |rel| %>
  <a href="/posts/<%= rel.friendly_id %>" class="img-cont">
    <%= image_tag("Index/#{rel.thumbnail_link}", :alt => "#{rel.title}", class: "soundtrack-img top-drop") %>
    <div class="img-mdl wellington"><h3 class="img-txt basic"><%= rel.title %></h3></div>
  </a>
<% end %>

在我的 posts_controller 显示方法中:

@related = Post.friendly.all.group_by(&:blog_category_id)

2 个答案:

答案 0 :(得分:1)

@related已包含所有帖子,您需要从列表中删除当前帖子或在迭代中跳过它:

在迭代之前排除当前的

<% @related[@post.blog_category_id].reject { |post| post == @post }&.each do |rel| %>

如果当前帖子是相关帖子,则跳过该迭代:

<% @related[@post.blog_category_id]&.each do |rel| %>
  <% next if rel == @post %>

答案 1 :(得分:0)

尝试使用.offset(1)。像这样:

@related = Post.friendly.all.group_by(&:blog_category_id).offset(1)

@related = Post.friendly.all.group_by(&:blog_category_id).order("created_at desc").offset(1)