从数据库ROR打印另一个类的所有对象和属性

时间:2018-07-28 05:26:26

标签: ruby-on-rails

如何打印一个类的相关类的所有对象的所有属性?这应该在哪个文件中(模型,视图,控制器?)。我应该实现什么功能?

我在Ruby on Rails项目中创建了2个类。一种称为“ Candy”,其属性“名称”为字符串类型。另一类称为“商店”。这些类与数据库关联。 Candy属于Shop,Shop有很多糖果。我正在尝试在“商店”视图中输出此内容。

我尝试了类似以下代码的不同变体:

    <ul>
    <%= Shop.Candies.name.all %>
    </ul>
    <% end %>

这:

    <% Shop.Candies.name do |Candies| %>
    <ul>
    <% puts Shop.Candies.name %>
    </ul>
    <% end %>

1 个答案:

答案 0 :(得分:2)

假设您有一个名为@shop的变量,它是通过执行以下操作获得的:

class ShopController < ApplicationController

  def show
    @shop = Shop.find(params[:id])
  end

end

然后,您认为您可以执行以下操作:

<ul>
  <% @shop.candies.each do |candy| %>
    <li>
      <%= candy.name %>
    </li>
  <% end %>
</ul>

此:

Shop.Candies.name.all

是一团糟,因为(至少):

  • 获取与商店关联的糖果的方法是candies,而不是Candies(大写字母很重要)。
  • candiesShop实例上的方法(例如,在我的示例中为@shop),而不是Shop类上的方法。因此,Shop.Candies没有任何意义(Shop.candies也没有意义)。但是,@shop.candies很有道理。
  • nameCandy实例上的方法。由于Candies没有意义,因此Candies.name也没有意义。但是,candy.name很有道理。
  • 我不知道all到底在做什么。