我试图在索引页面上显示所有博客文章,但每当我转到它时,它会显示我想要的内容,然后在它下面,它将其余数据作为哈希值。我希望第一篇文章和第一篇描述在浏览器中,但我不希望它下面的哈希值存在。
这是我的posts_controller.rb
class PostsController < ApplicationController
def index
@post = Post.all
end
def show
@post = Post.find(params[:id])
end
def new
@post = Post.new(params[:id])
end
def create
@post = Post.new(post_params)
@post.save
redirect_to @post
end
end
private
def post_params
params.require(:post).permit(:title, :description)
end
这是我的index.html.erb文件
<h1>Blog Posts</h1>
<table>
<th>Title</th>
<th>Description</th>
<div><%= @post.each do |post| %></div>
<tr>
<td><%= post.title %></td>
<td><%= post.description %></td>
</tr>
</table>
<% end %>
非常感谢任何帮助!
答案 0 :(得分:4)
我相信你会发现这一行是你问题的根源:
<div><%= @post.each do |post| %></div>
ERB中的<%= %>
标记用于输出评估结果。您只想处理使用<% %>
标记的循环。
<% @post.each do |post| %>
请注意删除=
符号以及<div>
。您不需要<div>
标记,因为不应该从迭代代码中输出任何内容。
此外,您的HTML 无效 - div
无法成为table
的直接子女。使用如下:
<table>
<thead>
<th>Title</th>
<th>Description</th>
</thead>
<tbody>
<% @post.each do |post| %>
<tr>
<td><%= post.title %></td>
<td><%= post.description %></td>
</tr>
<% end %>
</tbody>
</table>