Ruby on rails 未定义的方法`值';对于#<;CategoryItemValue::ActiveRecord_Associations_CollectionProxy:0x007ff9706d24c0>;

Ruby on rails 未定义的方法`值';对于#<;CategoryItemValue::ActiveRecord_Associations_CollectionProxy:0x007ff9706d24c0>;,ruby-on-rails,ruby,ruby-on-rails-4,Ruby On Rails,Ruby,Ruby On Rails 4,这很简单,但不起作用。我错过了什么 控制器 @guide = Guide.friendly.find(params[:guide_id]) @category = @guide.categories.friendly.find params[:id] @items = @category.category_items 看法 给出了无误差的计算方法 # 在category\u item\u values表中有一个values列,所以我不确定问题出在哪里。item

这很简单,但不起作用。我错过了什么

控制器

 @guide      = Guide.friendly.find(params[:guide_id])
 @category   = @guide.categories.friendly.find params[:id]
 @items      = @category.category_items
看法


给出了无误差的计算方法

#


category\u item\u values
表中有一个
values
列,所以我不确定问题出在哪里。

item.category\u item\u values
CollectionProxy
实例(人们可能会认为它是一种数组)

每个
category\u项目
都有[很可能,您没有提供足够的信息来更精确地猜测]许多值。如果上述假设是正确的,那么您可以这样做:

<% @items.each do |item| %>
  <% item.category_item_values.each do |value| %>
    <%= value %> # or maybe (depending on your model) <%= value.value %>
  <% end %>
<% end %>

#或者(取决于您的型号)

item.category\u item\u values
CollectionProxy
实例(人们可能认为它是一种数组)

每个
category\u项目
都有[很可能,您没有提供足够的信息来更精确地猜测]许多值。如果上述假设是正确的,那么您可以这样做:

<% @items.each do |item| %>
  <% item.category_item_values.each do |value| %>
    <%= value %> # or maybe (depending on your model) <%= value.value %>
  <% end %>
<% end %>

#或者(取决于您的型号)

您必须循环查看每个
类别项目值
,以获得结果,因为这表明
您的类别项目值是一个关联

所以你可以做一些像

<% item.category_item_values.each do |category_item_value| %>
  <%= category_item_value.value %>
<% end %>

您必须循环查看每个
类别项目值
,以获得结果,因为这表明
您的类别项目值是一个关联

所以你可以做一些像

<% item.category_item_values.each do |category_item_value| %>
  <%= category_item_value.value %>
<% end %>


谢谢你的回答。只是有个不相关的问题。如果我将一条记录存储在变量中,比如
jon=User.find(3)
,并在
jon.name
页面上调用变量几次,这比仅仅使用
User.find(3.name)
3次快吗?还是每次使用变量时它仍然执行db查找?是的。这种技术被称为“缓存”。代码不会对数据库执行三次查询,而是只执行一次。感谢您的帮助谢谢您的回答。只是有个不相关的问题。如果我将一条记录存储在变量中,比如
jon=User.find(3)
,并在
jon.name
页面上调用变量几次,这比仅仅使用
User.find(3.name)
3次快吗?还是每次使用变量时它仍然执行db查找?是的。这种技术被称为“缓存”。代码不会对数据库执行三次查询,而是只执行一次。感谢您的帮助