首页 > 解决方案 > 属于关联工作在本地但不在生产服务器上

问题描述

我有一张student桌子和一张classrooms桌子。我的学生索引视图中有一行代码

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

我正在尝试显示与student.classroom_id. 此代码适用于使用 sqlite3 的本地开发环境,但是当我使用 MySQL 将代码复制到我的 cPanel 网络服务器时,我收到此错误

undefined method `classroom_name' for nil:NilClass

有谁知道我的代码有什么问题?

我已将所有代码从本地安装复制到服务器。我在迁移中添加了一个外键。我已经rails db:migrate在服务器上运行。

教室.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

学生.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

nil:NilClass` 的cPanel 服务器undefined method教室名称'出错,但它确实适用于 rails install 上的本地 ruby​​。

标签: ruby-on-rails

解决方案


根据错误,您正在进行生产,显然,表中没有classroom该学生的条目。但是,如果是这种情况,您应该使用

<td><%= student.classroom.try(:classroom_name) %></td>

推荐阅读