Ruby on rails 获取未定义的方法'each';对于#<;邮政编码:0xb5d0df30>;在索引视图中
在尝试ruby时,我只是问了一个问题,但这里有另一个未定义的方法“each”,我尝试了很多东西Ruby on rails 获取未定义的方法'each';对于#<;邮政编码:0xb5d0df30>;在索引视图中,ruby-on-rails,ruby,Ruby On Rails,Ruby,在尝试ruby时,我只是问了一个问题,但这里有另一个未定义的方法“each”,我尝试了很多东西 <h1>This is the index page</h1> <p>I need to get the new action running!</p> <%= link_to 'My Blog', controller: 'posts' %> </br> <%= link_to 'New post', new_post_p
<h1>This is the index page</h1>
<p>I need to get the new action running!</p>
<%= link_to 'My Blog', controller: 'posts' %>
</br>
<%= link_to 'New post', new_post_path %>
<h1>Listing posts</h1>
<table>
<tr>
<th>Title</th>
<th>Text</th>
</tr>
<% @posts.each do |post| %> ///<----ERROR HERE!
<tr>
<td><%= posts.title %></td>
<td><%= posts.description %></td>
<td><%= link_to 'Show', posts_path(posts) %></td>
<td><%= link_to 'Edit', edit_posts_path(posts) %></td>
</tr>
<% end %>
</table>
这是索引页
我需要开始新的动作
列名职位
标题
正文
/// 在控制器的索引下执行以下操作:
def index
@posts = Post.all
end
然后在您的视图中,在您的每个do之后,将变量称为post
,而不是posts
<% @posts.each do |post| %>
<tr>
<td><%= post.title %></td>
<td><%= post.description %></td>
<td><%= link_to 'Show', post_path(post) %></td>
<td><%= link_to 'Edit', edit_post_path(post) %></td>
</tr>
<% end %>
您的@posts实例变量指向一个新的post记录,而不是post集合。您需要一个数组来迭代,而不是一篇文章。将控制器中的索引方法修改为以下内容:
def index
@posts = Post.all
end
#app/controllers/posts_controller.rb
class PostsController < ApplicationController
def index
@posts = Post.all
end
end
Post.new
返回单个(空)对象,each
方法需要一个可枚举的
(数组、散列、集合等等),因此会出现错误。如果要调用。对象上的每个
,该对象必须由数据集合组成(即使“集合”有一个元素)
您正在调用Post.new
——意思是。每个
方法都将返回一个异常,它无法在预期的集合中循环
您需要执行以下操作:
def index
@posts = Post.all
end
#app/controllers/posts_controller.rb
class PostsController < ApplicationController
def index
@posts = Post.all
end
end
#app/controllers/posts_controller.rb
类PostsController<应用程序控制器
def索引
@posts=Post.all
结束
结束
这将使您的代码正常工作。我该怎么做?对不起,你在索引中做Post.all还是Post.new?谢谢,这很好用,让我发疯了我知道这很简单,但我找不到,再次谢谢你