Ruby on rails 我想列出数据库中的所有用户,我得到一个奇怪的错误-未定义的方法“each”。我该怎么办?
这是列出我的用户的代码Ruby on rails 我想列出数据库中的所有用户,我得到一个奇怪的错误-未定义的方法“each”。我该怎么办?,ruby-on-rails,loops,foreach,Ruby On Rails,Loops,Foreach,这是列出我的用户的代码 <div> <% @govornik.each do |g| %> <p><%= g.name %></p> <p><%= g.description %></p> <% end %> </div> 这是来自控制器的代码 class GovorniciController < ApplicationContr
<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
戈沃尼克是我的模特
下面是我的模型的代码和该模型的迁移
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
问题的结论:
我想显示数据库表Govornici中的所有mi用户
连接到govornik模型,我得到以下错误
为什么这是一个奇怪的错误?这完全是意料之中的错误。这:
@govornik = Govornik.new
创建新的Govornik记录。而且,新的Govornik记录不包括每个方法。因此,错误正是您所期望的
如果希望收集所有Govornik记录,则应创建一个类似以下内容的变量:
@govorniks = Govornik.all
在这种情况下,变量@govorniks将是一个ActiveRecord::Relation,它将具有可用于迭代所有记录的each方法
顺便说一句,我建议您从控制台复制错误,并将其作为文本包含在问题中。屏幕截图在某些设备上很难读取。而且,它使复制和粘贴变得不可能,以防我们需要这样做来帮助您解决问题。此外,屏幕截图错误不会显示整个堆栈跟踪,这有时会有所帮助。由@jvillian给出的答案是正确的
def index
@govorniks = Govornik.all
end
下一次,你可以用脚手架。开始时,创建控制器、模型和视图要容易得多。您可以学习从输出中对代码进行反向工程
rails g scaffold Govornik name:string description:string
gdje zapinje Nikola?呵呵,看看下面的答案,把这一行放进控制器def show@govorniks=Govornik.all end和in view使用@govorniks.each