Rails,重复模型显示在模板上

在我的模板上,我展示了他们孩子的 created_at(评论)订购的书籍。但是当我以这种方式订购时,这些书会显示两次/三次(不同)。我该如何解决?

我的控制器:

li{
  padding-top:50px;
  padding-bottom:10px;
}

如您所见,我已经尝试过 @pagy,@books = pagy_countless(Book.where(user_id: current_user.id).joins(:comments).order("comments.created_at DESC").group("books.id,comments.created_at"),items:10 ) # I am using pagy gem 。没有帮助。我还尝试将 group() 添加到代码的末尾(和中间)。没用。

.distinct
qq9931 回答:Rails,重复模型显示在模板上

您可以使用 select MAX 每个组代替order DESC

Book.joins(:comments)
 .select("books.*,MAX(comments.created_at) as c_max")
 .where(user_id: current_user.id)
 .group("books.id")
,

我建议您在调试时不要使用 pagy gem。待非分页版本正常工作后,再将其添加回来。

joins 确实会产生多个 Book 实例。你需要的是

@books = Book.where(user_id: current_user.id).includes(:comments)

然后在模板中(你没有向我们展示,所以我在做假设”:

<%- @books.each do |book| %>
  <h2><%= book.title %></h2>
  <ul>
  <%- book.comments.each do |comment| %>
  <li><%= comment.text %></li>
  <%- end %>
  </ul>
<%= end %>

(希望我在那里得到了所有的erb!我多年来一直在使用haml!)

本文链接:https://www.f2er.com/4031.html

大家都在问