Loading [MathJax]/jax/output/CommonHTML/config.js
社区首页 >问答首页 >在控制员级别有效地查询所有帖子的评论?

在控制员级别有效地查询所有帖子的评论?
EN

Stack Overflow用户
提问于 2013-06-20 01:32:04
回答 2查看 102关注 0票数 0

我在posts控制器中有一个索引操作,视图显示所有帖子,每个帖子后面都有评论。我当前的实现是,在嵌入的html文件中,在@posts.each do |p|块中,我使用p.comments来获取每个帖子的所有评论。然而,仅仅在视图中这样做似乎并不好,但我找不到在控制器中这样做的方法。有没有人能给点建议?或者这就是正确的做法吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-06-20 01:36:49

在您的控制器中,当您查询帖子时,使用includes(:comments)将SQL查询的数量从1+n减少到2:

代码语言:javascript
代码运行次数:0
复制
@posts = Post.includes(:comments).where(......)

您可以将代码保留在视图中,因为p.comments不会触发更多的SQL查询。

查看教程Eager loading associations

票数 4
EN

Stack Overflow用户

发布于 2013-06-20 01:46:13

Arie在解决n+1问题上做得很好。在视图方面,您仍然可以使用相同的方法,但最好使用集合部分:

代码语言:javascript
代码运行次数:0
复制
# posts/index.html.erb
<%= render @posts %>

这将查找位于/views/posts/_post.html.erb的部分,因为向它发送一个post变量。它将对@posts数组中的每个Post模型执行此操作。

对于注释,在_post.html.erb中你可以这样写:

代码语言:javascript
代码运行次数:0
复制
# /views/posts/_post.html.erb
<% # Post content here %>
<%= render post.comments %>

与posts集合一样,它将使用位于/views/comments/_comment.html.erb的部分内容呈现每个评论

有关更多详细信息,请查看rails guide

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17203958

复制
相关文章
AlpineJS作者:不上班,一年站着赚10w刀
这位老哥名叫「Caleb Porzio」,是一名全栈工程师。在离职前,他的年收入为9w刀。
公众号@魔术师卡颂
2021/08/26
1.5K0
AlpineJS作者:不上班,一年站着赚10w刀
Laravel扩展推荐:导航元素工具“Laravel Navigation”
本篇文章给大家分享一个Laravel扩展:Laravel Navigation包,介绍一下怎么利用Laravel Navigation 轻松构建站点导航元素,希望对大家有所帮助!
很酷的站长
2022/11/29
5030
Laravel扩展推荐:导航元素工具“Laravel Navigation”
Laravel Jetstream是什么以及如何入门?
Laravel Jetstream 与 Laravel 8 一起于2020年9月8日发布。
Lemon黄
2020/09/28
6.5K0
lineNumber: 6; columnNumber: 40; 文档根元素 “mapper” 必须匹配 DOCTYPE 根 “configuration”。
lineNumber: 6; columnNumber: 40; 文档根元素 “mapper” 必须匹配 DOCTYPE 根 “configuration”。
全栈程序员站长
2022/07/01
5880
JavaScript动态设置根元素的rem
说到rem自然就会想到em,我们知道em是相对于父元素的字体大小的单位,那么rem则是相对于根元素也就是元素的字体大小的单位。
刘亦枫
2020/03/19
4.2K0
Vue3 - $attrs 的几种用法(1个或多个根元素、Options API 和 Composition API)
使用 Vue 开发时,肯定会接触到 组件 的概念,无可避免的也会接触到 组件通讯 的概念。
德育处主任
2022/09/23
3.5K0
Vue3 - $attrs 的几种用法(1个或多个根元素、Options API 和 Composition API)
多个Laravel项目如何共用migrations详解
在实际开发中,我们可能经常会遇到一个项目会建立两个 Laravel 项目,一个是面向用户的 web/API,一个是管理员后台,这两个项目一般情况下是共用一个数据库的,那么我们的 migration 可以共用吗?该怎么操作?
子润先生
2021/07/13
6920
多个扇形元素绕圆旋转
这种效果有很多方案,最后选择了一个比较简单的方案,就是一个position: relative;的 div 。包裹5个position: absolute;的div。 通过旋转,调整5个div的 top 与 left,而产生弧度,并使中心点都指向圆心。 黄色扇形与文字 都是在5个div内部。
拿我格子衫来
2023/10/19
2560
多个扇形元素绕圆旋转
数据校检
数据校验的基本原理 <1> 数据校验的必要性 受元器件的质量、电路故障或噪音干扰等因素的影响,数据在被处理、传输、存储的过程中可能出现错误 若能设计硬件层面的错误检测机制,可以减少基于软件检错的代价(系统观) <2> 校验的基本原理 增加冗余码(校验位) - 有效信息(k位) 校验信息(r位) <3> 码距的概念 同一编码中,任意两个合法编码之间不同二进制位数的最小值 0011 与 0001 的码距为1,一位错误时无法识别 0000、0011、0101、0110、1001、1010、1100、1111等
ruochen
2021/05/16
7390
数据校检
如何修改Laravel中url()函数生成URL的根地址
本文主要给大家介绍了修改Laravel中url()函数生成URL的根地址的相关内容,相信大家都晓得 Larevel 的一票帮助函数中有个 url(),可以通过给予的目录生成完整的 URL,是非常方便的一个函数:
用户8449980
2021/07/13
3.4K0
一个 Vue 模板可以有多个根节点(Fragments)?
通常,我们通过在最外层包裹一层 div 来解决这个问题,但这个div元素一般没有啥使用,就是让模板符合单根需求。
前端小智@大迁世界
2020/05/12
3.4K0
c++ vector删除多个元素方法
转自:https://blog.csdn.net/daofengdeba/article/details/7865229
用户7886150
2021/01/19
2.7K0
Laravel 使用多个数据库连接
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/105853.html原文链接:https://javaforall.cn
全栈程序员站长
2022/08/09
1.4K0
Laravel 中使用 PM2 管理多个队列
接着上一篇的思路,要在 Laravel 中使用 PM2 管理多个队列,该如何操作呢
Bolton
2023/05/31
6650
我是如何通过开源项目做到年入 80 万的?
不知道你是否还记得,去年我们曾经在公众号上发布过一篇文章《我是如何通过开源项目月入 10 万的?》,里面主要讲述了知名前端开源项目 fullPage.js 作者是如何通过 GitHub 做到年入百万的事迹。
GitHubDaily
2020/06/29
9980
我是如何通过开源项目做到年入 80 万的?
竟然有人质疑我还在用Laravel开发?别忘了PHP是最好的语言。
之前写了一篇Laravel提高DB查询效率的文章,转发到群里后竟然有人质疑我说“Laravel是他好几年前用的框架,没想到现在还有人在用。”
王中阳Go
2022/10/26
2.5K0
vue的单根元素问题及解决方法
在进行vue项目开发时,难免遇到各种各样的问题,虽然这些问题和报错会打击我们的自信心,但是只要换个方位思考,问题将成为驱使我们前进的动力。下面小编将以组件模板的单一根元素问题为例,讲解如何使用问题驱动法,解决并拓展想关的问题。
算法与编程之美
2021/11/15
4380
点击加载更多

相似问题

Livewire -检测到多个根元素

11

Livewire:检测到多个根元素。这是不支持的。

15

Laravel Livewire超时

115

多个设备(实例)之间的Laravel livewire同步

114

检测到空的XML根元素

12
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文