Dumb stackoverflow要求更多上下文...我打开索引帖子页面(下面),出于某种奇怪的原因,实际文本下方会出现一个额外的数组。为什么?
<h1><%= @posts.each do |post| %></h1>
<p><%= post.content %></p>
<% end %>
帖子控制器:
class PostsController < ApplicationController
def index
@posts = Post.find(:all, :order => "content")
end
def new
@post = Post.new
end
def create
@post = Post.new(params[:post])
end
end
用户模型:
class Post < ActiveRecord::Base
attr_accessible :content, :title
belongs_to :user
end
哎呀的想法,我这样展示。
Yippi
[#<Post id: 1, title: "Hello", content: "Yippi", created_at: "2013-01-25 16:36:08", updated_at: "2013-01-25 16:36:08">]
<h1><%= @posts.each do |post| %></h1>
应改为<h1><% @posts.each do |post| %></h1>
当您使用 <%= %> 时,它的输出将位于您的 ERB 文件中。如果你在控制台中键入 posts.each,你会看到 return 语句将 pe 帖子数组。您正在将该数组输出到 erb 中,因为您使用的是 <%= 而不是 <%
这篇文章有关于ERB sytanx的更多信息:在Rails中的ERB中,<%,<%=,<%#和-%>有什么区别?
<% @posts.each do |post| %>
<tr>
<td><%= post.title %></td>
<td><%= post.content %></td>
<td><%= post.created_date %></td>
<td><%= post.updated_date %></td>
</tr>
<% end %>