首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何访问对虾表格单元格中内容的另一个模型/记录?

如何访问对虾表格单元格中内容的另一个模型/记录?
EN

Stack Overflow用户
提问于 2018-03-29 18:44:34
回答 1查看 67关注 0票数 1

我正在构建一个带有表格(对虾和对虾-表格)的PDF,其中特定章节的所有教育目标(EO)都与其用例(UC)一起显示。我直接得到了EO,但不知道如何让UC进入单元格。这是我的代码。也许有人比我更有想法,或者知道如何做得更好。提前感谢!

代码语言:javascript
复制
class UseCase < ApplicationRecord
    has_and_belongs_to_many :educational_objectives
end

class EducationalObjective < ApplicationRecord
    has_and_belongs_to_many :use_cases
end

app/pdfs/章节_pdf.rb

代码语言:javascript
复制
require 'prawn'

class ChapterPdf < Prawn::Document
    def initialize(eo, chapter)
        @educational_objectives = eo
        @chapter = chapter
        @subject_id = @chapter.subject_id

        chapter_header
        chapter_text
        items
    end

    ...

    def items
        table_data = []

        @educational_objectives.map do |item|
            table_data << [item.position, item.educational_objective, use_cases(item.id)]
        end
        ...
    end

    def use_cases(id)
      ucs = @educational_objectives.joins(:use_cases).
                                where(educational_objectives: {id: id}).
                                select(:use_case)
      ucs.join do |uc|
        uc
      end
    end
end

当我查看服务器日志时,我看到以下内容:

代码语言:javascript
复制
SELECT "use_case" FROM "educational_objectives" INNER JOIN "educational_objectives_use_cases" ON "educational_objectives_use_cases"."educational_objective_id" = "educational_objectives"."id" INNER JOIN "use_cases" ON "use_cases"."id" = "educational_objectives_use_cases"."use_case_id" WHERE "educational_objectives"."chapter_id" = ? AND "educational_objectives"."id" = ?  [["chapter_id", 9], ["id", 169]]

SELECT  1 AS one FROM "educational_objectives" INNER JOIN "educational_objectives_use_cases" ON "educational_objectives_use_cases"."educational_objective_id" = "educational_objectives"."id" INNER JOIN "use_cases" ON "use_cases"."id" = "educational_objectives_use_cases"."use_case_id" WHERE "educational_objectives"."chapter_id" = ? AND "educational_objectives"."id" = ? LIMIT ?  [["chapter_id", 9], ["id", 171], ["LIMIT", 1]]

在我的PDF中,我看到了单元格

代码语言:javascript
复制
#<EducationalObjective:0x00007f8569997370>#<EducationalObjecti
ve:0x00007f85699971e0>#<EducationalObjective:0x00007f85699970
50>

我的错误在哪里?然后我想用逗号分隔显示它...是的,我是一个新手,非常感谢你的帮助!

EN

回答 1

Stack Overflow用户

发布于 2018-03-29 19:49:07

has_and_belongs_to_many关联提供了a number of helper methods -对于您的情况,您将能够调用educational_objective.use_cases来返回相关记录的集合。

这意味着您可以删除use_cases方法,并使用类似于以下内容的内容:

代码语言:javascript
复制
  table_data = @educational_objectives.map do |item|
    [item.position, item.educational_objective, item.use_cases]
  end

由于您使用的是map,因此不需要使用在此之外定义的数组。

这假设上例中的itemEducationalObjective的一个实例,尽管我对此有点困惑,因为您也在调用item.educational_objective

如果这对你有什么帮助或者你有任何问题,请告诉我。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49554063

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档