Принадлежит к ассоциативным работам на локальном, но не на производственном сервере - PullRequest
0 голосов
/ 16 мая 2019

У меня есть таблица student и таблица classrooms. У меня есть строка кода в представлении моего ученика

<td><%= student.classroom.classroom_name %></td>

Я пытаюсь отобразить название класса, связанное с student.classroom_id. Этот код работает в локальной среде разработки с использованием sqlite3, но когда я копирую код на свой веб-сервер cPanel с использованием MySQL, я получаю эту ошибку

undefined method `classroom_name' for nil:NilClass

Кто-нибудь знает, что не так с моим кодом?

Я скопировал весь код из локальной установки на сервер. Я добавил внешний ключ в миграцию. Я запустил rails db:migrate на сервере.

classroom.rb

class Classroom < ApplicationRecord
  validates :classroom_name, presence: true, length: { minimum: 3, maximum: 50}

  has_many :students, dependent: :destroy
  has_many :families, through: :students
end

student.rb

class Student < ApplicationRecord
  enum status: [ :Active, :Deactive ]
  belongs_to :classroom, optional: true

  has_many :student_group_assignments
  has_many :student_groups, through: :student_group_assignments
end

Ошибка на сервере cPanel undefined method имя_класса 'для nil: NilClass` но он работает на локальном ruby ​​при установке rails.

1 Ответ

0 голосов
/ 16 мая 2019

В соответствии с ошибкой, вы выходите на работу, ясно, что в таблице нет записи classroom для этого учащегося.Однако, если это так, вы должны использовать

<td><%= student.classroom.try(:classroom_name) %></td>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...