Ruby on rails RubyonRails错误:计算nil.each时出错
我正在尝试学习Ruby,但我遇到了以下错误: 计算nil时出错。每个 我在这里读《入门指南》 下面是index.html.erb中的一段代码:Ruby on rails RubyonRails错误:计算nil.each时出错,ruby-on-rails,ruby,null,Ruby On Rails,Ruby,Null,我正在尝试学习Ruby,但我遇到了以下错误: 计算nil时出错。每个 我在这里读《入门指南》 下面是index.html.erb中的一段代码: <h1>Listing snippets</h1> <div class="snippets"> <% @posts.each do |post| %> <h2><%= post.title %></h2> <p><%= link_to
<h1>Listing snippets</h1>
<div class="snippets">
<% @posts.each do |post| %>
<h2><%= post.title %></h2>
<p><%= link_to 'View', post %> | <%= link_to 'Edit', edit_post_path(post) %> | <%= link_to 'Delete', post, :confirm => 'Are you sure?', :method => :delete %></p>
<% end %>
</div>
我做错了什么?
谢谢
PS:我看到它们显示在这里http://127.0.0.1:3000/posts但是如果我想将它们显示在根文件夹(http://127.0.0.1:3000/)将路由添加到routes.rb(仅适用于Rails 2.x):
对于Rails 3.x,请查看以下内容:
计算nil时出错。每个都意味着@posts不是数组。您是否创建了posts表?将路由添加到routes.rb(仅适用于Rails 2.x):
对于Rails 3.x,请查看以下内容:
计算nil时出错。每个都意味着@posts不是数组。您创建了posts表吗?您应该创建一个表,并将post逻辑放在其中
然后,只要在每个使用的控制器操作中初始化集合,就可以将其放在任何视图上
因此,在家庭控制器中,您仍然需要:
@posts = Post.find(:all)
至于你的第一个问题,试着通过@posts=Post查找它们。查找(:all)
你应该做一个标记,并将Post逻辑放在其中
然后,只要在每个使用的控制器操作中初始化集合,就可以将其放在任何视图上
因此,在家庭控制器中,您仍然需要:
@posts = Post.find(:all)
至于您的第一个问题,请尝试通过@posts=Post查找它们。查找(:all)
错误(您可能怀疑)发生在以下行:
<% @posts.each do |post| %>
不知怎的,@posts最终是零,尽管我们希望它成为一个列表
这有点奇怪,因为上面的代码看起来应该可以工作。我会尽力帮你找出这个问题
all相当于Post.find(:all),根据,它可能返回nil,但我不知道在实践中何时会发生这种情况。通常,如果数据库中没有POST,它应该返回一个空列表([]
),或者如果数据库表根本不存在,则引发异常
因此,为了防止Post.all以某种方式返回nil,请在控制器中尝试@posts=[]
而不是@posts=Post.all
。然后,。每个
都应该工作
如果(如我所怀疑的)不是这样,我猜是不知何故,一个不同于您上面发布的控制器会被执行。然后,因为@posts从未设置过,尝试访问它只会得到nil,这就解释了错误。因此,请检查您的路径和类名,并确保您认为运行的代码实际运行
希望这能帮助您找出问题所在,并让我们知道是什么为您解决了问题 错误(您可能怀疑)发生在以下行:
<% @posts.each do |post| %>
不知怎的,@posts最终是零,尽管我们希望它成为一个列表
这有点奇怪,因为上面的代码看起来应该可以工作。我会尽力帮你找出这个问题
all相当于Post.find(:all),根据,它可能返回nil,但我不知道在实践中何时会发生这种情况。通常,如果数据库中没有POST,它应该返回一个空列表([]
),或者如果数据库表根本不存在,则引发异常
因此,为了防止Post.all以某种方式返回nil,请在控制器中尝试@posts=[]
而不是@posts=Post.all
。然后,。每个
都应该工作
如果(如我所怀疑的)不是这样,我猜是不知何故,一个不同于您上面发布的控制器会被执行。然后,因为@posts从未设置过,尝试访问它只会得到nil,这就解释了错误。因此,请检查您的路径和类名,并确保您认为运行的代码实际运行
希望这能帮助您找出问题所在,并让我们知道是什么为您解决了问题 是的,我可以在/posts上看到它们,但我想在home/index.html.erb中显示一个全局变量类型。有这样一件事吗?你怎么能在看到帖子的同时得到零。每个错误?有些东西没有意义。我只在index.html.erb文件中得到nil.each错误,它实际上是根,但在/posts视图中我可以看到它们。但是我希望将它们列在home(root)中。是的,我可以在/posts上看到它们,但是我想在home/index.html.erb中显示一个全局变量类型。有这样一件事吗?你怎么能在看到帖子的同时得到零。每个错误?有些东西没有意义。我只在index.html.erb文件中得到nil.each错误,它实际上是根,但在/posts视图中我可以看到它们。但我想把它们列在家里(根)。