我已经完成了ruby入门指南几次,我总是得到相同的结果。 Guids
NameError in PostsController#index
uninitialized constant PostsController::Posts
提取的来源(第21行):
19
20
21
22
23
24
def index
@posts = Posts.all
end
def edit
Rails.root: C:/RailsTesting/blog
应用程序跟踪|框架跟踪|完整追踪 app / controllers / posts_controller.rb:21:在'index'中 请求
出于沮丧/绝望,我从教程提供的实际代码中复制了所有文件但没有用,请帮助。
这是我的index
<h1>Hello, Rails!</h1>
<%= link_to "My Blog", controller: "posts" %>
<%= link_to 'New post', new_post_path %>
<table>
<tr>
<th>Title</th>
<th>Text</th>
<th></th>
<th></th>
</tr>
<% @posts.each do |post| %>
<tr>
<td><%= post.title %></td>
<td><%= post.text %></td>
<td><%= link_to 'Show', post %></td>
<td><%= link_to 'Edit', edit_post_path(post) %></td>
<td><%= link_to 'Destroy', post_path(post),
method: :delete, data: { confirm: 'Are you sure?' } %>
</tr>
...
这是我的posts_controller
class PostsController < ApplicationController
def new
@post = Post.new
end
def create
@post = Post.new(params[:post].permit(:title, :text))
if @post.save
redirect_to @post
else
render 'new'
end
end
def show
@post = Post.find(params[:id])
end
def index
@posts = Posts.all
end
def edit
@post = Post.find(params[:id])
end
def update
@post = Post.find(params[:id])
if @post.update(params[:post].permit(:title, :text))
redirect_to @post
else
render 'edit'
end
end
def destroy
@post = Post.find(params[:id])
@post.destroy
redirect_to posts_path
end
private
def post_params
params.require(:post).permit(:title, :text)
end
end
答案 0 :(得分:5)
您的index
方法将Post
类写成复数形式。将其更改为Post.all
答案 1 :(得分:0)
将索引操作修改为:
def index
@posts = Post.all
end
此处Post
是您获取所有帖子的模型。