我正在使用Ruby on Rails教程创建博客,当我在localhost:3000地址中调出页面时收到此错误:
'未定义的方法`每个'为nil:NilClass'
我的控制器:
class PostsController < ApplicationController
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
def index
@posts = Post.all
end
end
我的查看文件:
<h1>Listing posts</h1>
<table>
<tr>
<th>Title</th>
<th>Text</th>
</tr>
<% @posts.each do |post| %>
<tr>
<td><%= post.title %></td>
<td><%= post.text %></td>
</tr>
<% end %>
</table>
有人能帮助我吗?
答案 0 :(得分:1)
您应该将 index 操作从私有部分移开。
答案 1 :(得分:1)
由于您的PostsController#index
方法是私有的,因此当您输入/posts
时,其代码无法运行,因此@posts
实例变量仍为nil
。
将其移至公开栏目:
class PostsController < ApplicationController
def index
@posts = 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
end