google时我没有找到与我的问题相关的单个结果,但在我看来这是一个相当简单的问题:
给出的是文章模型和评论模型。现在,在文章显示页面上,当列出所有文章的评论时,每个评论应该在该文章中具有其时间顺序ID,而不是其整体ID。
关联和一切正常但我不知道如何实现'相对'comment_id而不采用相当复杂的方式并手动将article_comment_id列添加到我的注释模型并在我的控制器中处理该属性。
没有简单的方法可以在其父模型中调用它所属的对象ID吗?
答案 0 :(得分:1)
据我所知,没有一种自动方式可以询问记录与同行一起索引的记录。
我这样做的方法就是在迭代数组时跟踪索引。
所以对于ERB:
<% @article.comments.each_with_index do |comment, index| %>
<div class="comment_id"><%= index + 1 %></div>
<div class="content"><%= comment.content %></div>
或HAML:
-@article.comments.each_with_index do |comment, index|
.comment_id= index + 1
.content= comment.content
如果您的分页,则需要index + 1 + (page*num_items)
或其他内容。
您可以通过添加iteration_id
等列来保存数据库中的索引,然后将以前创建的过滤器添加到Comment模型中,如下所示:
before_create do
last_comment = article.comments.unscoped.order("iteration_id DESC").select('iteration_id').first
self.iteration_id = last_comment ? last_comment.iteration_id + 1 : 0
true
end
当评论被销毁时你也需要做点什么。
希望有所帮助!
答案 1 :(得分:1)
您可以使用partial:
迭代它们<%= render @article.comments %>
在partial中,您可以使用comment_count
引用评论的计数。这是Rails提供的自动功能。