当前位置: 首页 > 知识库问答 >
问题:

Ruby on Rails:nil:NilClass的未定义方法“instructors”

房冥夜
2023-03-14

我知道有很多类似的问题,但这些解决方案都不管用。我有一个关系数据库。具体来说,我有两个相互关联的表格:程序和讲师。

表之间的关系如下:

一个程序“has_many:讲师”和一个讲师“belongs_to:程序”

以下是表格模型的代码:

class Program < ActiveRecord::Base
  validates_presence_of :slug

  has_many :instructors
  has_many :degrees
  has_many :disciplines
  has_many :projects
  has_many :articles

  def to_param
    slug
  end
end

class Instructor < ActiveRecord::Base
  belongs_to :program

  has_attached_file :portrait,
    :storage => :s3,
    :path => "/pictures/:id/:filename"

  # has_attached_file :featured_picture
  validates_attachment_content_type :portrait, content_type: /\Aimage\/.*\Z/

end

我还有一个非常简单的观点:

= render('layouts/menu')
 .infra-centered
  = render('navigation')
  .infra-row
.infra-col-12
  %h2 Animation
  -if @an.instructors.empty?
    %p.notes Add faculty
  - else
    %table
      %tr
        %th Name
        %th Position
        %th Office
        %th Phone
        %th Email
      - @an.instructors.order(:lastname).each do |instructor|
        %tr
          %td= instructor.firstname + " " + instructor.lastname
          %td= instructor.rank
          %td= instructor.office
          %td= instructor.phone
          %td= instructor.email

控制器为:

class PagesController < ApplicationController
  def contacts
    @employees = Employee.all
    @an = Program.where(abbreviation: "an").first
    @gd = Program.where(abbreviation: "gd").first
    @il = Program.where(abbreviation: 'il').first
    @ph = Program.where(abbreviation: 'ph').first
  end
end

问题是RoR没有识别表之间的关系,导致行"@an.instructors.empty?失败,并出现以下错误:nil的未定义方法“教师”:NilClass

我不知道为什么不工作,请帮忙。

共有1个答案

谭高峯
2023-03-14

问题不一定是由关系引起的,但事实是变量为零,这表明没有找到具有该缩写的记录。也许,在尝试使用它们之前,可以尝试在视图中执行一个检查,检查一个(或其他)是否为零。

 类似资料:
  • Good day我不确定发生了什么我怀疑eclipse,但在UserDetailsServiceImpl中它是定义的,因为我实现了spring的UserDetails服务,下面是我的代码 这是让人头痛的一行“UserDetails UserDetails=userDetailsService.loadUserByUsername(username)”提前感谢您

  • 问题内容: 我正在尝试对页面登录进行编码,但在此错误中我处于停止状态 PLIZ在这里告诉我错了事 问题答案: 用于准备的语句。例如 您正在尝试直接在主数据库对象上执行查询。对于PDO,这意味着 您确实应该研究准备好的语句。您很容易受到SQL注入攻击的影响,并且由于您从一开始就使用PDO,因此不编写安全查询基本上是不可原谅的。

  • Rails关联的基本问题如下表: 商店:名称,网络 产品:标题、价格、店铺id 关系定义为has_many并属于: 型号: shop.rb 产品rb型 控制器: shops\u控制器。rb型 products_controller.rb 在商店视图中,我设法参考并显示每个商店的所有产品,没有问题: 但另一方面,在产品视图中,我无法从Shop表中显示网络信息: 这将返回以下错误:

  • 问题内容: 这是我的代码: 我在最后一行收到以下错误: 调用未定义的方法mysqli_stmt :: get_result() 这是conn.php的代码: 如果我写这行: 打印 “未准备的声明” 。如果我直接在IDE中运行查询替换?用值标记,效果很好。请注意,$ conn对象在项目中的其他查询中可以正常工作。 请帮忙....... 问题答案: 请阅读此方法的用户说明: http://php.ne

  • 我正在远离mysql和mysqli,因为stackoverflow上的许多用户都在不断地谈论它的优点。 我做了一个数据库类,并测试了这个,这与数据库连接良好。我试图更新我准备好的语句,以匹配我在不熟悉的领域,但最终得到以下错误: 它反映了这一行:

  • 我尝试了拉雷维尔的入门指南。通用域名格式。 有一章创建了任务。回调和函数