0

我是 Ruby on Rails 的新手,并且正在关注 ruby​​onrails 指南。我不确定我做错了什么。

Post_controller.rb

class PostsController < ApplicationController

 def index
   @posts = Post.all
 end

 def new
 end

 def create
    @post = Post.new(post_params)

    @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

我的 index.html.erb

<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>

我收到的错误

Showing c:/Sites/blog/app/views/welcome/index.html.erb where line #9     
raised:
undefined method `each' for nil:NilClass
Extracted source (around line #9):


   <th>Text</th>
 </tr>

 <% @posts.each do |post| %>
   <tr>
     <td><%= post.title %></td>
     <td><%= post.text %></td>

如您所见,我在 def 索引下的变量“@posts”与我的变量“@posts.each do |post|”相关。不知道为什么这不起作用。

4

1 回答 1

1

您需要创建一个视图并将其放在正确的目录中。

app/views/posts/目录中,创建一个名为的新文件,index.html.erb然后将以下代码放入其中。

<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>
于 2013-10-23T03:20:34.553 回答