我刚接触过rails并跟随http://guides.rubyonrails.org/getting_started.html。我目前在第5.8节,它应该列出我的博客在localhost:3000 /帖子中的所有帖子,但我收到了一条消息:
NoMethodError in Posts#index
Showing /Users/sw/Code/blog/app/views/posts/index.html.erb where line #9 raised:
undefined method `each' for nil:NilClass
Extracted source (around line #9):
<% @posts.each do |post| %>
<tr>
<td><%= post.title %></td>
<td><%= post.text %></td>
这是我的posts_controller.rb:
class PostsController < ApplicationController
def index
@post = Post.all
end
def new
end
def create
@post = Post.new(params[:post].permit(:title, :text))
@post.save
redirect_to @post
end
def show
@post = Post.find(params[:id])
end
private
def post_params
params.require(:post).permit(:title, :text)
end
端
这是我的index.html.erb:
<table>
<tr>
<th>Title</th>
<th>Text</th>
</tr>
<% @posts.each do |post| %>
<tr>
<td><%= post.title %></td>
<td><%= post.text %></td>
</tr>
<% end %>
我一直在搜索,但一直找不到答案!
答案 0 :(得分:4)
您正在循环变量@posts
,但在索引中您正在分配变量@post
。
因此,在posts_controller.rb
替换
def index
@post = Post.all
end
带
def index
@posts = Post.all
end