如何在执行筛选器后使用 rails 显示数据库中的关联对象



首先,我为我的对象文件夹做了一个过滤器,在得到这个过滤器的结果后,我得到了@folders的对象。

我可以显示表文件夹的所有属性,但我不知道如何显示与表文件夹文件夹关联的表中存在的其他信息。

这是我的模型:

文件夹型号 :

class Folder < ActiveRecord::Base paginates_per 15 default_scope { order('folders.created_at desc') } ..... has_one :technical_detail, class_name: 'Folders::TechnicalDetail', foreign_key: 'folder_id', dependent: :destroy, inverse_of: :folder

细节模型:

class Folders::TechnicalDetail < ActiveRecord::Base belongs_to :folder, class_name: '::Folder', inverse_of: :technical_detail

所以文件夹的相关对象是技术细节,如何在做一个过滤器后显示技术细节表中的属性

过滤器的 colntroller : ' def 搜索 参数[:搜索] ||= {}

if params[:search][:created_at_start].present? && params[:search][:created_at_end].present?
@folders = ::Folder.filter(params[:search]).where('created_at BETWEEN ? AND ?', params[:search][:created_at_start], params[:search][:created_at_end]).where(town_id: permitted_towns)
else
@folders = ::Folder.filter(params[:search]).where(town_id: permitted_towns)
end

结束'

过滤器工作正常,结果我有对象文件夹,现在我如何显示技术详细信息,我在表格中显示数据

当你得到@folders它意味着文件夹(几条记录(的集合,你必须首先选择一个记录@folders然后你才能显示其他相关表的属性

这是示例

@first_folder = @folders.first
@first_folder.technical_detail.attribute_name

或者你可以循环它

@folders.each do |folder|
if folder.technical_detail
folder.technical_detail.attribute_name
end
end

您可以在打印属性之前先检查它,上面的 if 语句如果folder.technical_detail意味着它正在检查technical_detail是否为 nil/不是,则它将继续打印attribute_name,但如果为 nil,它将跳过记录

最新更新