【问题标题】:How to print all elements that belongs_to this table如何打印属于该表的所有元素
【发布时间】:2017-03-10 02:19:18
【问题描述】:

好的,我不确定我的标题是否足够清楚,但我会尝试解释一下

我有两个表:具有_many 项目的订单和属于_to 订单的项目。 我刚开始学习 RoR 并坚持一个简单的任务。我想要的只是 像这样显示订单和相关项目:

订单 1:
项目 1
项目 2

订单 2:
项目 1
项目 2
...

我知道如何单独显示订单或商品,我知道如何显示商品的订单(item.order.id),但是如何在上面的表格中显示订单和商品?在我显示订单的模板中,我可以在每次迭代时遍历每个项目并将其外部 order_id 与 order.id 进行比较,但这会很尴尬。我假设我应该将项目放入某种多维散列中,其中键为 order_id,然后我可以通过订单 ID 引用此散列并获取其中的所有项目,但我不确定它是否正确。

我希望我在这里写的内容是可以理解的。

【问题讨论】:

    标签: ruby-on-rails has-many belongs-to


    【解决方案1】:

    当您定义has_many 关系时,您会自动获取查询这些对象的方法。在这种情况下,方法order.items

    所以你可以这样做:

    Order.find_each do |order|
      puts "Order #{order.id}:"
      order.items.each do |item|
        puts "Item #{item.id}"
      end
    end
    

    (我使用了 find_each 方法,该方法可从 Rails 2.3+ 中获得。不过,您可以使用简单的 Order.all.each

    【讨论】:

    • 太好了,谢谢!但是如果我想在模板中使用它,它就行不通了,对吧?它说未定义的方法“项目”。
    • 假设您正确调用了Order 类型的对象,它应该可以工作。在你看来,你到底是怎么称呼它的?
    • 好的,我知道了。有用。应该是“项目”而不是“项目”。非常感谢!
    猜你喜欢
    • 1970-01-01
    • 2017-01-07
    • 1970-01-01
    • 1970-01-01
    • 2021-07-16
    • 2021-02-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多