我是Rails的初学者。我想显示特定主题下的帖子列表。 这是我的控制者:
def index
@posts = Post.find(params[:topic_id])
end
这是我的观点:
<% @posts.each do |p| %>
<tr>
<td> <%= p.user_id %> </td>
<td> <%= p.title %> </td>
<td> <%= p.content %> </td>
<td> <i> <%= p.created_at %> </i> </td>
<td> <%= link_to 'Show Post', post_path(p) %> </td>
<td> <%= link_to 'Delete Post', post_path(p), method: :delete %> </td>
<td> <%= link_to 'Update Post', edit_post_path(p) %> </td>
</tr>
<% end %>
我收到的错误是NoMethodError in Post#index (undefined method 'each' for #<Post:0x9c01d58>)
。我不知道错误是什么。你能解释一下错误的位置吗?
答案 0 :(得分:1)
我不知道错误是什么
Post.find
会返回一个帖子。当然,它不会回复each
,因为它只是一个帖子,而不是帖子的集合。
你可能想要的是:
@posts = Post.where(topic_id: params[:topic_id])
但很难说。
答案 1 :(得分:1)
Post.find(params[:topic_id])
检索Post
模型的一个实例,而不是数组。
@posts = Post.all
检索所有帖子
@posts = Post.where(topic_id: params[:topic_id])
检索主题
@posts = Post.where(user_id: params[:user_id])
检索所有用户的帖子