Ruby on Rails - 结果作为对象打印在我的html上

时间:2016-05-03 13:25:34

标签: ruby-on-rails ruby ruby-on-rails-4

这是我的posts_controller.rb

class PostsController < ApplicationController
    def index
        @posts = Post.all.order("created_at DESC")
    end

    def new
    end

    def create
        @post = Post.new(post_params)

        @post.save
        redirect_to @post
    end

    def show
        @post = Post.find(params[:id])
    end

    private 
        def post_params
            params.require(:post).permit(:title, :body)
        end
end

这是我的index.html.erb

<%= @posts.each do |post| %>
    <div class="post_wrapper">
        <h2 class="title"><%= link_to post.title, post %></h2>
        <p class="date"><%= post.created_at.strftime("%B, %d, %Y") %></p>
    </div>
<% end %>

以下是页面的外观: screenshot

为什么那条[]行出现了? 如何隐藏/删除它?

4 个答案:

答案 0 :(得分:0)

=更改为-

<%- @posts.each do |post| %>

您在ERB中看到<%=表示将其打印到视图中,而<%-表示执行此ruby代码。

由于Ruby中的所有内容都是表达式,因此@posts.each do |post|; end %>块会返回一个@posts数组,然后将其呈现到您的视图中。

答案 1 :(得分:0)

删除=,例如: -

<%- @posts.each do |post| %>

答案 2 :(得分:0)

此行是问题,您不需要=

<% @posts.each do |post| %>

答案 3 :(得分:0)

将“=”更改为“ - ”或只删除“=”

<% @posts.each do |post| %> 

<%- @posts.each do |post| %>

<% %> - 执行ruby代码

<%- %> - 避免表达后的换行符

<%= %> - 打印成erb

<%# %> - 注释掉代码