Значения БД не всегда отображаются на экране - PullRequest
0 голосов
/ 01 июля 2018

Итак, я сделал эшафот для модели под названием Club, а затем удалил столбец с именем :title и добавил один с именем :name. Затем я отредактировал маршрут, чтобы получить only: [:index, :show]. Я пошел в код контроллера и сделал это так:

before_action :set_club, only: [:show]

  # GET /clubs
  # GET /clubs.json
  def index
    @social = Club.where tag: "Social"
  end

  # GET /clubs/1
  # GET /clubs/1.json
  def show
  end

Затем я заполнил базу данных так:

Club.create([{ name: 'Club 1' }, {role: 'officer'}, {tag: 'Social'}, {description: 'asd'}])
Club.create([{ name: 'Club 2' }, {role: 'member'}, {tag: 'Social'}, {description: 'efg'}])

и установите вид:

<h2>SOCIAL</h2>    
<% @social.each do |project| %>    
  <div class="club">    
    Project: <%= project.name %>
  </div>
<% end %>

и

<strong>name:</strong>
<%= @club.name %>

<strong>Description:</strong>
<%= @club.description %>

<strong>Role:</strong>
<%= @club.role %>

<strong>Tag:</strong>
<%= @club.tag %>

<br />
<%= link_to 'Back', clubs_path %>
<br />

Однако при визуализации значения имени, тега и т. Д. Не всегда отображаются.

Это скриншоты из / клубов, / клубов / 1 и / клубов / 2 по порядку:

index resource

show resource 1

show resource 2

Кажется, некоторые поля просто не отображаются последовательно. Я получаю нулевые имена на индексном маршруте, и только одно из них показывает имя в шоу-маршруте. Есть идеи, что вызывает это? Кажется, что он находит оба клуба, потому что он печатает «Project:» дважды.

PS: моя схема.rb:

ActiveRecord::Schema.define(version: 20180630182744) do    
  create_table "clubs", force: :cascade do |t|
    t.text "description"
    t.string "tag"
    t.datetime "created_at", null: false
    t.datetime "updated_at", null: false
    t.string "name"
    t.string "role"
  end
end

РЕДАКТИРОВАТЬ: Pre_action выглядит следующим образом:

def set_club
  @club = Club.find(params[:id])
end

ОБНОВЛЕНИЕ: Кажется, что каждое поле читается как отдельная запись в базе данных. С семенем, показанным выше, я действительно могу пройти от clubs/1 до 8 каждый с одним заполненным полем ...

1 Ответ

0 голосов
/ 01 июля 2018

Мой seed.rb был настроен неправильно, я передавал массив хешей вместо одного хеша в массиве. Исправил это до:

Club.create([{ name: 'Club 1', role: 'officer', tag: 'Social', description: 'asd'}])
Club.create([{ name: 'Club 2', role: 'member', tag: 'Social', description: 'efg'}])

Обратите внимание, что существует один хеш, содержащий все поля клубов.

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