错误:未定义的局部变量或方法`post'for#<postscontroller:0x3a5cba0>“</postscontroller:0x3a5cba0>

时间:2013-08-01 13:00:29

标签: rails-migrations

我在添加帖子链接方面遇到了问题。 的 My code for index is :-

<h1>Listing posts</h1>
<%= link_to 'new post',new_post_path %>
<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>
<h1> hello rails </h1>
<%= link_to "my blog",controller: "posts" %>
<p>Find me in app/views/welcome/index.html.erb</p>

my code for post_controller is:-

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
#render text: params[:post].inspect
end
def show
@post=Post.find(params[:id])
end
private
def post_params
params.require(:post).permit(:title,:text)
end
end

显示的错误是“未定义的局部变量或方法`post'for#” 请帮我跟踪错误

1 个答案:

答案 0 :(得分:1)

PostsController 中检查方法代码index

应该是:

def index
@posts=Post.all
end

而不是:

def index
@posts=post.all
end

检查:

http://guides.rubyonrails.org/getting_started.html

本文明确指出:

打开app/controllers/posts_controller.rb并在PostsController类中,定义一个这样的新方法:

def new
end

使用PostsController中定义的新方法,如果刷新,您将看到另一个错误:

Template is missing.

您现在收到此错误,因为Rails希望像这样的简单操作具有与之关联的视图以显示其信息。没有可用的视图,Rails错误输出。

阅读文档以了解并尝试通过将某些视图与方法相关联来自行解决。 它很容易,轨道方式。