繁体   English   中英

我想从数据库中列出我的所有用户,我收到一个奇怪的错误 - 未定义的方法 `each'。我该怎么办?

[英]i want to list all my users from the database, i am getting a strange error - undefined method `each'.What should i do?

这是列出我的用户的代码

<div>

  <% @govornik.each do |g| %>

     <p><%= g.name %></p>
     <p><%= g.description %></p>

   <% end %>

</div>

这是控制器的代码

class GovorniciController < ApplicationController
     def new
     end

     def show
       @govornik = Govornik.new
     end

end

Govornik 是我的模型这里是我的模型的代码和该模型的迁移

class Govornik < ApplicationRecord

end

迁移代码

class CreateGovorniks < ActiveRecord::Migration[5.2]
  def change
    create_table :govorniks do |t|
      t.string :name
      t.string :description

      t.timestamps
    end
  end
end

问题结论:

我想显示连接到模型 govornik 的数据库表 Govornici 中的所有 mi 用户,并且我从错误页面中获得以下错误图像

为什么这是一个“奇怪的错误”? 这是一个完全预期的错误。 这个:

@govornik = Govornik.new

创造了一个新的Govornik记录。 并且,新的Govornik记录不包含方法each 因此,该错误正是您所期望的。

如果你想要一个所有Govornik记录的集合,那么你应该创建一个更像的变量:

@govorniks = Govornik.all

在这种情况下,变量@govorniks (将是ActiveRecord::Relation )将具有each方法,您可以使用它来迭代所有记录。

顺便说一句,我建议您从控制台复制错误并将它们作为文本包含在您的问题中。 在某些设备上很难阅读屏幕截图。 而且,如果我们需要这样做来帮助您解决问题,则无法复制和粘贴。 此外,屏幕截图错误不会显示整个堆栈跟踪,这有时会有所帮助。

@jvillian 的回答是正确的。

def index
 @govorniks = Govornik.all
end 

下一次,你可以使用脚手架。 开始时创建控制器、模型和视图要容易得多。 您可以学习从输出中逆向工程代码。

rails g scaffold Govornik name:string description:string

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM