Ruby on rails неправильно выдает все содержимое таблицы postgresql - PullRequest
0 голосов
/ 24 декабря 2018

Я действительно новичок в ruby ​​на рельсах, и у меня действительно возникают проблемы с простым циклом for.

Я делаю это:

Внутри posts_controller.rb

@post = Post.all.order("created_at DESC")

Внутри posts / index.html.erb (представление относится к контроллеру)

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

  <%= link_to post.title, post %>
  <br>"Published "
  <%= time_ago_in_words(post.created_at) %>
  <br>by user.email
  <%= post.user.email %>

  <br><br>
<% end %>

Но вывод такой (я скопировал только чтоважная часть)

primer pst de ET 
"Published " 1 day 
by user.email cacaca@gmail.com 

primer post de cocina 
"Published " 1 day 
by user.email cacaca@gmail.com 

[#<Post id: 14, title: "La tercera es la vencida", content: "<p><span style=\"color:#ffffff;\"><span style=\"backg...", created_at: "2018-12-23 03:07:41", updated_at: "2018-12-23 03:07:41", user_id: 1, category: "rangos de aventurero", thumbnail: "img2", status: "pending">, #<Post id: 13, title: "segundo post con status", content: "<p><span style=\"color:#2ecc71;\">ahora &acute;si qu...", created_at: "2018-12-23 03:05:32", updated_at: "2018-12-23 03:05:32", user_id: 1, category: "Endless Tower", thumbnail: nil, status: nil>, #<Post id: 12, title: "Segundo post COCINA", content: "<p>Esto es el primer post COCINA con im&aacute;gen...", created_at: "2018-12-23 02:53:06", updated_at: "2018-12-23 02:53:06", user_id: 1, category: "Cocina", thumbnail: nil, status: nil>, #<Post id: 11, title: "primer post con status", content: "gtgtrhtgr", created_at: "2018-12-23 02:31:51", updated_at: "2018-12-23 02:31:51", user_id: 1, category: "", thumbnail: nil, status: nil>, #<Post id: 10, title: "primer post economía", content: "f3rggg ecoooooo", created_at: "2018-12-23 02:19:42", updated_at: "2018-12-23 02:19:42", user_id: 1, category: "Economía", thumbnail: nil, status: nil>, #<Post id: 9, title: "primer pst de ET", content: "ET SE HACE UNA VEZ A LA SEMAN", created_at: "2018-12-23 02:17:04", updated_at: "2018-12-23 02:17:04", user_id: 1, category: "Endless Tower", thumbnail: nil, status: nil>, #<Post id: 8, title: "primer post de cocina", content: "wfowrffmweew COCINAAAAAA", created_at: "2018-12-23 02:00:39", updated_at: "2018-12-23 02:00:39", user_id: 1, category: "Cocina", thumbnail: nil, status: nil>] 
AQUÍ TERMINA EL RENDER INDIVIDUAL

Таким образом, в конце создается дамп всего содержимого базы данных, и я действительно не знаю, почему.

Я явно не хочу, чтобы пользователь видел таблицусодержание, но я не знаю, что не так с кодом выше.

Я знаю, что это, вероятно, очень простой вопрос, но я пока не могу найти ответ.Пожалуйста, помогите мне.

Спасибо за помощь:)

РЕДАКТИРОВАТЬ: вот полный код контроллера

class PostsController < ApplicationController

  # La siguiente línea establece que se llamará al método <find_post>
  # antes de llamar a los métodos <show>, <edit>, <update>, <destroy>
  before_action :find_post, only: [:show, :edit, :update, :destroy]
  before_action :stablish_categories_and_thumbnail

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

  def show
  end

  def new
    @post = current_user.posts.build
  end

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

  def edit
  end

  def update
    if @post.update(post_params)
      redirect_to @post
    else
      render 'edit'
    end
  end

  def destroy
    @post.destroy
    redirect_to root_path
  end

  private
  def post_params
    params.require(:post).permit(:title, :content, :category, :status, :thumbnail)
  end

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

  def stablish_categories_and_thumbnail
    # Esto es lo que hay que ir rellenando luego con las categorías finales
    @categories = ['Cocina',
                   'Endless Tower',
                   'Economía',
                   'rangos de aventurero']

    @thumbnails_list = ['img1', 'img2', 'img3', 'img4']
  end

end

1 Ответ

0 голосов
/ 24 декабря 2018

Удалите знак = из ваших posts / index.html.erb :

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

вместо

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

<%= ... %> оценитутверждение / блок и распечатать результат.<% ... %> будет только оценивать, а не распечатывать.Например -

<%= a = 5 %> назначит и напечатает '5' на странице.

<% a = 5 %> только присвоит '5' локальной переменной a, но не распечатает ее.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...