如何在视图上隐藏数据库信息?

时间:2015-11-08 17:02:40

标签: ruby-on-rails ruby

当我尝试运行我的代码时,我收到了上面的错误。

正如您在下图所示,页面帖子/索引叶子在页面页脚之前显示一些信息:

enter image description here

我不明白它可能会来到哪里,因为它是它出现的唯一页面。

以下是我的观点:

<%= @post.each do |post| %>
<h1 class="Blog_post_title"><%= link_to post.title, post %></h1>
<p class="date"><%= post.created_at.strftime("%B, %d, %Y") %></p>
<p><%= image_tag post.landing_image.url , class: "landing_image_blog"  %></p>
<p><%= post.body %></p>
<%= link_to post do %>
<div class="button12">Continuer la lecture</div>
<% end %>
<div class="border_grey_blog"></div>
<% end %>
</div>
<%= render "footer" %>

my posts_controller.rb:

class PostsController < ApplicationController

def index
    @post = Post.all.order('created_at DESC')
end

def new
    @post = Post.new
end

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

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

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

    if @post.update(params[:post].permit(:title,:title2,:title3,:title4,:title5,:title6,:title7,:title8,:title9, :body, :image,:image1,:image2,:image3,:image4,:image5,:image6,:image7,:image8, :landing_image, :some_text1, :some_text2, :some_text3, :some_text4, :some_text5, :some_text6, :some_text7, :some_text8, :some_text9, :some_text0))
        redirect_to @post
    else
        render 'edit'
    end
end


def create
    @post = Post.new(post_params)
    if @post.save
        redirect_to @post
    else
        render 'new'
    end
end

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

    redirect_to "/posts"
end

private

def post_params
    params.require(:post).permit(:title, :body, :image,:image1,:image2,:image3,:image4,:image5,:image6,:image7,:image8, :landing_image, :some_text1, :some_text2, :some_text3, :some_text4, :some_text5, :some_text6, :some_text7, :some_text8, :some_text9, :some_text0, :title2,:title3,:title4,:title5,:title6,:title7,:title8,:title9)
end
end

有什么想法吗?

2 个答案:

答案 0 :(得分:4)

你的错误出现在第一行:

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

应该是

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

因为<%=会打开一个表达式标记,用于显示其内容。

答案 1 :(得分:2)

看起来你输出了@ posts.each的结果。请注意您在视图中如何执行此操作:

<%= @post.each do |post| %>
  # other code
<% end %>

这实际上会将数组中的所有数据输出为ruby对象。如果要将此更改为不输出所有内容,则需要将其更改为

<% @post.each do |post| %>
  # other code
<% end %>

现在不会在html中返回@ post.each。