You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Rails访问特定活动评论页出现undefined method `each' for nil报错

错误根因

你在Reviews控制器的index方法中写错了变量名,导致视图读取的评论列表变量为空:

  • 当访问events/:id/reviews路径时,控制器会命中@event = Event.find_by_id(params[:event_id])的分支,你将该活动的评论集合赋值给了@events变量,但reviews/index.html.erb视图中必然是用@reviews变量来遍历渲染评论列表,此时@reviews为nil,调用each方法就会抛出你遇到的报错。
修复方案

修改app/controllers/reviews_controller.rb中的index方法:

def index
    if @event = Event.find_by_id(params[:event_id])
        # 修正变量名,把@events改为@reviews,和视图使用的变量对应
        @reviews = @event.reviews
    else
        @reviews = Review.all
    end
end

可选补充修复

你的new方法也存在逻辑错误,会导致后续新建评论功能异常,建议同步修改:

def new
    if @event = Event.find_by_id(params[:event_id])
        # 原代码错误覆盖了@event变量,改为赋值给@review
        @review = @event.reviews.build
    else
        @review = Review.new
    end
end

修改完成后重启Rails服务,重新测试跳转评论列表的功能即可恢复正常。

内容的提问来源于stack exchange,提问作者prstsb

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 03:54:03