0

愚蠢的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">]
4

2 回答 2

3

<h1><%= @posts.each do |post| %></h1>应该读<h1><% @posts.each do |post| %></h1>

当您使用 <%= %> 时,它的输出将在您的 erb 文件中。如果您要在控制台中键入 posts.each,您会看到 return 语句将 pe 帖子数组。您正在将该数组输出到您的 erb,因为您使用的是 <%= 而不是 <%

这篇文章有更多关于 ERB sytanx 的信息:Rails 中的 ERB 中的 <%、<%=、<%# 和 -%> 有什么区别?

于 2013-01-25T16:48:50.060 回答
0
<% @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 %>
于 2013-01-25T17:13:45.267 回答