报错undefined method `each',请求排查Rails控制器与视图代码问题
解决Ruby on Rails中
undefined method 'each'报错问题 嘿,我来帮你捋清楚这个报错的根源!
你碰到的undefined method 'each'错误,核心原因是你视图里调用each的变量是nil。咱们结合你的代码逻辑拆解一下:
当提交表单触发create动作后,如果@wad.save失败,代码会执行render 'new'重新渲染new页面。但问题在于,你的create方法里完全没初始化@wads这个实例变量——只有index方法里才会给@wads = Wad.all赋值。而你渲染的页面(就是你贴出来的这段视图代码)里有<% @wads.each do |wad| %>的循环,此时@wads是nil,自然就会抛出“找不到each方法”的错误。
怎么解决呢?给你两个思路:
如果你确实需要在new页面展示所有wads的数据,那就在
create方法的else分支里补上@wads的初始化,和index方法保持一致:def create @wad = Wad.new(wad_params) if @wad.save redirect_to wad_path else @wads = Wad.all # 新增这行初始化代码 flash[:error] = "Failed to submit (missing paramters). Please try again!" render 'new' end end顺便提一句,
flash[:error]最好放在render之前,不然可能没法正常显示提示~如果你其实不需要在这个页面展示所有wads,那直接把视图里的
@wads.each循环代码删掉就搞定了。
内容的提问来源于stack exchange,提问作者iThompkins
相关产品推荐
相关产品推荐

