Ruby on rails 如何显示具有多个关系的属性?-罗尔

Ruby on rails 如何显示具有多个关系的属性?-罗尔,ruby-on-rails,Ruby On Rails,表列包括: 检查控制员 class InspectionsController < ApplicationController def index @inspections = Inspection.all end 我遗漏了什么吗?尝试将ApplicationRecord更改为ActiveRecord::Base,这就是我用来建立关系的方法。让我知道这是否解决了您的问题 class Inspection < ActiveRecord::Base belongs

表列包括:

检查控制员

class InspectionsController < ApplicationController
  def index
    @inspections = Inspection.all
  end

我遗漏了什么吗?

尝试将
ApplicationRecord
更改为
ActiveRecord::Base
,这就是我用来建立关系的方法。让我知道这是否解决了您的问题

class Inspection < ActiveRecord::Base
  belongs_to :acordo
end

class Acordo < ActiveRecord::Base
    has_many :inspections, dependent: :destroy
类检查
尝试将
ApplicationRecord
更改为
ActiveRecord::Base
,这就是我用来建立关系的方法。让我知道这是否解决了您的问题

class Inspection < ActiveRecord::Base
  belongs_to :acordo
end

class Acordo < ActiveRecord::Base
    has_many :inspections, dependent: :destroy
类检查
您的数据库似乎有
检查
,而没有
acordo

错误:

检查中的命名错误#索引
未定义nil:NilClass的“created_at”方法

。。。这意味着
inspection.acordo==nil
(不是对象),当您想在
处获得
created\u时,它会提醒您,返回
created\u处字段的getter的对象不正确


我的意思是关系正常,但在一次(或多次)检查中,表中有
acordo\u id
,但没有
acordo
,具有相同的
id

尝试检查是否存在与以下内容相关的
acordo

  <% if !inspection.acordo.nil? %>
       <%= inspection.acordo.created_at %>
  <% end %>


或者进行一些批处理作业(并将其放入调度程序),以查找不属于任何acordo的格式错误的检查,并将其删除或将其移动到表
垃圾检查
(以确保数据一致性)。

看起来您的数据库有
检查
,没有
acordo

错误:

检查中的命名错误#索引
未定义nil:NilClass的“created_at”方法

。。。这意味着
inspection.acordo==nil
(不是对象),当您想在
处获得
created\u时,它会提醒您,返回
created\u处字段的getter的对象不正确


我的意思是关系正常,但在一次(或多次)检查中,表中有
acordo\u id
,但没有
acordo
,具有相同的
id

尝试检查是否存在与以下内容相关的
acordo

  <% if !inspection.acordo.nil? %>
       <%= inspection.acordo.created_at %>
  <% end %>


或者进行一些批处理作业(并将其放入调度程序),以查找不属于任何acordo的格式错误的检查,并将其删除或将其移动到表
垃圾检查中(以确保数据一致性)。

您可能有一个混乱的数据库,在添加检验和acordo之间的关系之前,您是否有任何检验条目?检查您的数据库,查看是否有任何检查的acordo_id列为空。但是,其他答案是正确的,在读取nil对象的属性之前,应该检查relationship inspection.acordo是否存在

您可能有一个混乱的数据库,在添加inspection和acordo之间的关系之前,您是否有任何检查条目?检查您的数据库,查看是否有任何检查的acordo_id列为空。但是,其他答案是正确的,在读取nil对象的属性之前,应该检查relationship inspection.acordo是否存在

你遇到了什么错误?实际输出是什么?你可以这样做,但你必须知道一个ordo id
Inspection.where(:acordo\u id=>id)
或者你可以使用
acordo.where(:Inspection\u id=>Inspection.id)
@LiborZahrádka,我相当肯定他在html文件中所做的工作是有效的,因为Inspection和acordo之间的关系,您可以在检查时调用acordo方法,这将返回与该检查相关联的acordo。这应该可以工作,我一直都是这样做的。错误一定在别处……您应该为rails安装gem
better errors
,它将帮助您调试。安装gem后,重新启动服务器并返回页面,让它出错。你会在右边得到一个框,你可以用它来检查事物的值,当你查找你的错误时,它通常会在使用Rails构建时很有用。你遇到了什么错误?实际输出是什么?你可以这样做,但你必须知道一个ordo id
Inspection.where(:acordo\u id=>id)
或者你可以使用
acordo.where(:Inspection\u id=>Inspection.id)
@LiborZahrádka,我相当肯定他在html文件中所做的工作是有效的,因为Inspection和acordo之间的关系,您可以在检查时调用acordo方法,这将返回与该检查相关联的acordo。这应该可以工作,我一直都是这样做的。错误一定在别处……您应该为rails安装gem
better errors
,它将帮助您调试。安装gem后,重新启动服务器并返回页面,让它出错。您将在右边得到一个框,您可以在查找错误时使用它来检查事物的值,并且它通常在使用rails构建时非常有用
class Inspection < ActiveRecord::Base
  belongs_to :acordo
end

class Acordo < ActiveRecord::Base
    has_many :inspections, dependent: :destroy
  <% if !inspection.acordo.nil? %>
       <%= inspection.acordo.created_at %>
  <% end %>