gpt4 book ai didi

ruby-on-rails - rails 未定义方法 `each' 为 nil :NilClass

转载 作者:行者123 更新时间:2023-12-04 02:07:57 25 4
gpt4 key购买 nike

我正在按照教程找到 here .这很简单,我完全按照说明进行了步骤 6.7。此时,我收到错误

undefined method `each' for nil:NilClass 

当我尝试访问 rails 服务器上的 index.html.erb 时。

我知道数据库运行良好,因为我可以执行步骤 6.3 中提到的所有操作,创建新帖子并显示/编辑/销毁它们绝对没有问题。

具体来说,问题出在线路上
<% @posts.each do |post| %>

它基本上声称 @posts为零。

感谢您对这个 ROR 新手的任何帮助!谢谢。

index.html.erb
<h1>Hello, Rails!</h1>
<table>
<tr>
<th>Name</th>
<th>Title</th>
<th>Content</th>
<th></th>
<th></th>
<th></th>
</tr>

<% @posts.each do |post| %>
<tr>
<td><%= post.name %></td>
<td><%= post.title %></td>
<td><%= post.content %></td>
<td><%= link_to 'Show', post %></td>
<td><%= link_to 'Edit', edit_post_path(post) %></td>
<td><%= link_to 'Destroy', post, :confirm => 'Are you sure?',
:method => :delete %></td>
</tr>
<% end %>
</table>

<br />

<%= link_to "My Blog", posts_path %>

post_controller.rb
class PostsController < ApplicationController
# GET /posts
# GET /posts.json
def index
@posts = Post.all

respond_to do |format|
format.html # index.html.erb
format.json { render json: @posts }
end
end

最佳答案

为了views要在 Rails 中正常工作,它们必须位于正确的目录中。这是 Rails 喜爱的所谓“Convention over Configuration”的众多实现之一。

所以,如果你有一个方法 index这个方法在一个名为 PostsController 的 Controller 中,您必须有一个名为 index 的 View 目录内views/posts/ .这样,Rails 就会知道它必须在处理此方法的 get 时呈现此 View 。

关于一个好的教程,我会推荐这个 one .它是扩展性的,涵盖了很多与 Rails 本身无关的内容,比如在 Heroku 上部署和一些 CSS。

关于ruby-on-rails - rails 未定义方法 `each' 为 nil :NilClass,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13015769/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com