ActiveRecord не возвращает все значения из таблицы, когда я использую ModelName.all - PullRequest
0 голосов
/ 30 августа 2018

Код понятен любому программисту рельсов.

Миграционный код:

class CreateBlogPosts < ActiveRecord::Migration[5.2]
  def up
    create_table :blog_posts do |t|
      t.string "title"
      t.string "subject"
      t.text "content"
      t.integer "likes"
      t.timestamps
    end
  end

  def down
    drop_table :blog_posts
  end
end

Маршрут:

resources :blogposts

Контроллер:

class BlogpostsController < ApplicationController
  def index
   @all = BlogPost.all 
  end

Модель:

class BlogPost < ApplicationRecord
end

Соответствие вида:

<h1>
 <%= @all %>
</h1>

Вывод (для этого представления - / blogposts / index /):

#<BlogPost::ActiveRecord_Relation:0x00007f440816f1e0>

В консоли rails (для BlogPost.all):

Traceback (most recent call last):
        1: from (irb):11
NoMethodError (undefined method `all' for #<BlogPost:0x0000000004749380>)

Проблема в следующем: в таблице blog_posts уже есть данные, которые я могу просмотреть, когда запускаю select * from blog_posts в MySQL. Но, на мой взгляд, я получаю вывод выше, а скорее я ожидаю, что все записи будут возвращены и отображены на экране.

Что я делаю не так?

Подсказка: Мне кажется, я не следую разумным настройкам Rails.

P.S .: Я новичок в мире рельсов.

Ответы [ 2 ]

0 голосов
/ 30 августа 2018

Вы можете использовать метод проверки , подобный этому <%= @all.inspect %>. Но обычно вы хотите сделать это во время отладки. Правильный путь состоит в том, чтобы повторить отношение мышления.

0 голосов
/ 30 августа 2018

@all является экземпляром ActiveRecord::Relation. Когда вы звоните:

<%= @all %>

по вашему мнению, вы печатаете этот объект (и #<BlogPost::ActiveRecord_Relation:0x00007f440816f1e0> - правильный вывод).

Если вы хотите отобразить записи, то вам нужно перебрать @all и отобразить их так:

<% @all.each do |blog_post| %>    
  <h1><%= blog_post.title %></h1>
  <p><%= blog_post.content %></p>
<% end %>

Обновление

Последняя проблема была решена путем перезапуска сервера Rails

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