【发布时间】:2012-10-22 16:34:16
【问题描述】:
我正在学习找到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 %>
posts_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
【问题讨论】:
-
能不能在控制器里做
@foo = "bar",然后在视图里成功做<%= @foo %>? -
那个 index.html.erb 是位于 views/posts/ 内还是其他地方?
-
@JasonSwett 我没有收到错误消息,但页面上没有显示“栏”。这个 index.html.erb 位于views/home/。我应该用views/posts/index.html.erb 来代替吗?
-
您的视图必须位于相应的控制器目录中。如果您的方法是
index在PostsController内,您的index.html.erb应该在views/posts/内。 -
哦,哇,显然我不明白 ROR 是如何工作的! Lucas Nogueira 是完全正确的 - 这解决了它。大家觉得我用的教程好么?或者有更好的推荐吗?
标签: ruby-on-rails